ずみーBlog

元クラゲ研究者(見習い)の92年生まれがエンジニアを目指しながら日々寄り道するブログです。

Railsで.envファイルで環境変数を管理する(Dotenv-rails)

短い覚え書きです。 Gemfile gem 'dotenv-rails' bundle install .envファイル作成 KEY='*******' #使用したいキーやパスワードを記述 SECRET_KEY='*******' .gitignore編集 #下記を追記 /.env 環境変数呼び出し #設定した環境変数の呼び出し ENV['KEY'] ENV…

RailsのAPIモードでアプリケーション開発してみる 〜バックエンドのユーザ管理機能編〜

エンジニア目指して独学中なのですが、いろんな技術をリサーチしていく中で、こんな構成でアプリを作ってみたくなりました。 DB MySQL バックエンド RailsのAPIモード フロントエンド React デザイン Semantic UI React そんなわけで、今日はRailsのAPIモー…

Rails6でSemantic UIを動かしたい

どうも、ずみーです。 前回の記事でRailsにSemantic UIを導入してみたものの、プルダウンリストみたいなニュッって動くやつが全然動きませんでした。よくよく調べて見たら、jQuery依存なのでjQueryを書かないとプルダウンは動かないらしいです。 インストー…

RailsにSemantic UIを導入する

Railsでのアプリケーション制作にも慣れてきたし、そろそろCSSフレームワークというのを使って画面設計してみたくなりました。 今まではTECH::CAMP(プログラミングスクール)で用意されたテンプレートばかり使っていて、あまり画面を1からデザインした経験…

【GAS】他部署からの依頼をGoogleフォームで受けてTrelloに自動連携し、管理工数削減した話(前編)〜外部JSONを読み込んでスクリプトのプロパティを自動設定する〜

どうも、ずみーです。 Trello。使ってますか。私は大好きです。 今日はTrelloをGoogleフォームと連携して業務効率改善しましたというお話。 ことの発端 私は現職で情シス×企画×業務効率改善(DX推進)みたいな部署にいるのですが、とにかく他部署からいろん…

Herokuアプリケーションに投稿した画像をAWS S3に保存できるようにする

こんにちは。ずみーです。 Herokuでは、アプリケーションにアップロードした画像ファイルなどは定期的に削除されてしまいます。 そこで、アップロードしたファイルの保存先をAWS S3に変更する方法について学びました。 まずは専門用語の理解から バケット S3…

【git stash】追加実装でブランチ作り忘れ

Git

何度かやってしまっているので対処法メモしておきます。 コミットする前にまずは退避 git stash 次に、ブランチを切りつつ(-bオプション)、そのブランチに切り替え git -b checkout <ブランチ名> 最後に、退避しておいた変更内容を適用します。 git stash ap…

【Ruby】sendメソッドとattr_accessorで属性を動的に読み書きする

おはようございます。ずみーです。 Rubyでメソッドの呼び出しはインスタンス名.メソッド名ですが、インスタンス名や.メソッド名の部分をパラメータにして動的に呼び出したいことってありますよね。 結論:sendメソッドで実現可能 使い方はこんな感じです。 #…

【ポイント:擬似モデル】Formオブジェクトパターンを理解する

Railsのデザインパターンの一つであるFormオブジェクトパターンを使って、フォームから一度の送信で複数のテーブルに安全に情報を送る方法について学びました。 フォームから複数モデルの情報を送る際の問題点 form_withメソッドに渡しているのは単一のモデ…

【Rails】本人のみデータ削除可、ただし一回確認アラートを挟みたい

やりたいことは2つ 削除アクションは本人のみ可能としたい 削除する前に一回ブラウザのアラートで最終確認させたい

数値をカンマ付きの金額表示にしたい

ごく短いメモです。 Rubyには:delimitedや:currencyという便利なメソッド(というかto_sのオプション?)があり、特に引数を指定しなくても金額表示の時のカンマ区切りをよしなにやってくれます。 1000.to_s(:delimited) # => 1,000 Railsのビューではさらに…

【RSpec】モデル単体テストで、全カラムに対して.eachで同じ操作を実行したい

Railsで単体テスト書いてます。 例えばpresence: trueみたいな、たくさんのカラムに適用されているバリデーションって、一つ一つ書くのがめんどくさいですよね。 全カラムを配列で取得し、each文で回して、presence: trueバリデーションを一括でテストしてみ…

Spec 結合テストコードをまとめる

同じ処理を繰り返している箇所 →サポートモジュールを使って一つのメソッドにまとめる ex)ログイン動作 ←何度もやってる サポートモジュールの作成 spec/support/sign_in_support.rb module SignInSupport def sign_in(user) visit new_user_session_path fi…

RSpec自動テスト時に画像を添付する

単体テストの時 単体テスト時はrack-testというGemを使うことで、添付される側のレコードに対してファイル添付できます。 FactoryBotと一緒に使用した例 FactoryBot.define do factory :item do association :user name { Faker::Lorem.word } #省略 image {…

Railsで特定のページで特定のJSファイルを読み込む

Ruby on Railsでは、app/assets/javascripts配下のJSファイルは自動で読み込まれるのですが、一部のページでしか使わないようなファイルを全ページで毎回読み込むのはなんか気持ち悪いですよね。 こちらの記事を参考に、javascript_include_tagメソッドを使…

Railsアプリケーション内で共通で使う定数を定義する(config/initializers/constants.rb)

やりたいこと メルカリみたいなアプリを作っています。 例えば、「手数料10%」の10%のように、アプリケーション内で共通で使いたい定数をあちこち別個に書くのってよろしくないですよね。できれば1個にまとめたい。 定数定義用のファイル作成 config/initia…

Active Storageで添付ファイルを付けられるようにする

チャットアプリでもECサイトでも、画像や動画が添付できるのは当たり前ですよね。そんなわけで、Active StorageというGemを使ってRailsアプリにファイルアップロード機能を追加する方法を学びました。 画像加工ツールたち 名称 区分 目的 Active Storage Gem…

特定のコントローラーで特定のアクションの場合を除いて、ユーザをログイン画面にリダイレクトしたい

Amazonでもメルカリでもそうですが、ログインしなくてもトップページとかは見れますよね。 きほん deviseの:authenticate_user!メソッド ログインしていないユーザをログイン画面へリダイレクトするメソッドです。 定石 よくある書き方は、application_contr…

理性的な人なら誰にも疑えない、それほど確実な知識

エンジニアスクールおかげで、今まで敬遠していた多くの行為が抵抗なくできるようになりました。 「文章を書いて公開する」というのもそれです。 自分が何かを調べて理解した過程を、拙い文章でもいいからまとめて公開することで、知識定着に役立つだけでな…

ローカルサーバをkill

どうも、ずみーです。 過去10回以上忘れて調べ直していることがあります。 それが、localhost:3000のkill。 開発中にローカル環境でサーバを立ち上げようとしたら、別プロセスですでに起動中、みたいな。 生来の飽きっぽさが原因で常にいろんなやりかけ開…

【正規表現初心者】 Passwordを英数字混在かつ6文字以上に制限したい

どうも、ずみーです。 Ruby on Railsで会員登録/ログイン機能付きのアプリを作っています。パスワードにアルファベットと数字が混在していないと登録できないような制限を付けたくなりました。 正規表現の基礎的な部分を復習しつつ、実装していきたいと思い…

【オブジェクト指向】インスタンス変数の使い方がちょっとだけわかった話

結論 配列のクラス変数を用意してnewする時にインスタンスを必ず配列に追加するようにしておけば、後から集計に使えるってことに気付きました。 今回の例 Foodクラスに@@foods = []という配列型のクラス変数を持っておき、12行目のinputメソッドでインスタン…

Active Hashで固定値をDB保存せずにテーブルのようにして扱う

ブログ投稿サービスで、記事投稿時にジャンル選択ができるような機能を実装しながら、Active Hashについて学びました。 Active Hashのきほん 都道府県や記事カテゴリなど、追加・変更が頻繁に生じないようなデータは、DBにテーブルを作るのではなく、Active …

配列の中で重複していないものだけを合計する

やりたいこと Rubyで、配列で渡される数値の合計値を出力するメソッドが作りたい。 ただし、渡された配列内で値が重複している数字は除いて合計を計算する。 出力例 lone_sum([1, 2, 3]) # → 6 lone_sum([3, 2, 3]) # → 2 lone_sum([3, 3, 3]) # → 0

FactoryBotとFaker

みなさま、おはようございます。ずみーです。 RSpecでテストデータの自動作成を行ってくれる、FactoryBot)とFakerの導入と使い方についての備忘録です。 ちなみに、Wikiにはこうありました。 Factory Bot(元々はFactory Girlとして知られていました)は、Ru…

RSpecの基本的なマッチャまとめ

マッチャとは こちらの記事によれば、 期待値と実際の値を比較して、一致した(もしくは一致しなかった)という結果を返すオブジェクト だそうです。 RSpecのテストコードで使います。 例えばこんな場合 あるページに飛んで、飛んだ先にあるはずの文言やリン…

Railsのアソシエーション 〜お前、なぜそれを知っている?!〜

どうも、ずみーです。 突然ですがみなさん、Railsの勉強をしていて、不思議に思うことはありませんか。 お前、なぜそれを知っている?!と。 実はこのRails、こっちが指示していないことも裏でたくさんやっといてくれる、 小粋な心遣いがいっぱいなのでした…