プログラミング -> Ruby on Rails
結論 標題の通りですが、config/credentials.yml.enc の復号に失敗すると、config/ にある YAML が読み込まれないことがあります。私の場合は config/storage.yml が読み込まれませんでした。 確認方法 確認方法は簡単で、credentials.yml.enc を編集しよう…
注意 とにもかくにも最低限度の説明用です。何もわからない状態からの脱却を目指す用です。したがって、用語や説明が不十分なところもあるかと思います。また、例として挙げている設計(オブジェクト同士の関係)も現実のモデルとしてはふさわしくないところ…
前提 最小限に、です。もろもろ省略していますし、命名もよろしくありません。用語の使い方も厳密ではありません。 が、何よりもまず最初に簡単に知ることが大切だと思うからです。
前置き 以下の記事に全て書かれているので、そちらを見ればこの記事は用済みではあります。
提示されました。
Squasher gem こちらの gem です。Rails におけるマイグレーションファイルをまとめるための gem です。 インストールの方法 この gem を使うためにはもちろんインストールをする必要があります。公式ドキュメント では Rails のGemfile に書く方法が紹介さ…
結論 tmp/ 配下に書き、rails console や rails runner で実行する。 理由 コミットに紛れ込む可能性を排除したいから 使い捨てであることが明確になるから 拡張子付きで「保存」することで、シンタックスハイライトなどを使うことができるから irb(pry) で…
前提 Railsガイドで解説されている、レプリカとかリードオンリーとかは考えず、単に2つのデータベースをモデルに応じて使い分けることを目的とします*1。 *1:ActiveRecord::Middleware::DatabaseSelector
前提 以下のコードにおいて tweet は Twitter::Tweet クラスのオブジェクトであるとします。 結論 tweet に対して to_json メソッドを用います。結果として得られる値は JSON の文字列なので、データベースにそのまま保存できます*1。 serialized_tweet_obje…
前提 Rails で RSpec を用いているものとします。 結論 bundle install や bundle exec rails db:migrate などの初期設定が終わっていますか。 エラーメッセージに惑わされない このエラーが出るときは、以下のようなメッセージも併せて書かれています。 Mak…
結論 Test Explorer UI という拡張機能をインストールします 上記の拡張機能の拡張機能である、Ruby Test Explorer ををインストールします Text Explore UI の設定をします(私はデフォルトのままにしました) Ruby Test Explorer の設定をします 個人的に…
結論 実行される Bundler のバージョンが Gemfile.lock に書かれているバージョンと一致していない。 どうするか Gemfile.lock に書かれているバージョンの Bundler をインストール(アップデート)します。たとえば、1.17.3 を入れたい場合には以下のように…
結論 少し古い記事ですと、Pokemon の名前空間が Faker::Pokemon として紹介されていることがあります。たとえば、以下の Qiita の記事です。 qiita.com これが現時点*1では、Faker::Game::Pokemon となっています。古い情報を参考にするとエラーになるので…
結論 標題のとおりです。RAILS_ENV=production の場合は Yay! You’re on Rails! ではなくエラー画面が出ます。 gyazo.com Heroku でもそうなる そして当然なのですが、Heroku にデプロイした際も Yay! You’re on Rails! の画面は出ません。$ rails new 直後…
注意事項 2020/01/06 時点での話です 単一実行時のキャッシュの話です 状況 GitHub Actions で bundle install した gem のキャッシュが保存できるようになったので喜んで使っていたのですが、とある日にログを見たところ、以下のような表示が出ていました。…
状況 GitHub Actions の YAML が以下のような場合を想定しています。これは 公式ドキュメント に沿った書き方です。 on: [push] name: hogehoge jobs: fugafuga: name: foobar runs-on: ubuntu-latest container: image: ruby:2.7.0 (中略) steps: - uses:…
結論 #create の場合も #new 〜 #save の場合も引数に配列を取ることができる #create の場合` はまとめて*1 登録できる #new 〜 #save の場合は、#new で引数に配列を取った後に、each で回して個別に #save する 具体例 users テーブルに 2つ のレコードを…
状況 こういうやつです。 gyazo.com 結論 .solargraph.yml を Rails のルートに作成し、そこの除外設定を書きます 具体的な記述内容は以下のとおりになります include: - '**/*.rb' exclude: - vendor/**/* - '.bundle/**/*' reporters: - rubocop require: …
原因の一つとして考えられるもの id を明示的に指定してレコードを作成した履歴がありませんか? seed のデータを投入する場合にやりがちです。 たとえば、以下のようにして user のレコードを作った場合です。 User.create( id: 100, name: 'taro', age: 24…
結論 以下の2つのどちらかの方法を使いましょう*1。 方法1. #new してから valid? で検証し、#errors でログを出す #create をいきなり使うと、エラーがなかった場合には実際にレコードが作られてしまうので、通常はこちらを使うといいと思います。 以下、us…
状況 以下を消したいときです。 gyazo.com 結論 app/controllers/admin 配下にある、目的のモデルのコントローラに以下のメソッドを書く*1。 def valid_action?(name, resource = resource_class) %w[edit destroy].exclude?(name.to_s) && super end 補足 …
はじめに 「なんで vendor/ 配下に、読み込むべき画像を置くんだよ」という意見、大変ごもっともだと思いますし私もそう思いますが、特例としてお読み下さい…… 環境 Railsは5.1.1 Rubyは2.4.1 vendor/配下の画像ファイルが読み込まれない 例えば、vendor/ass…
結論 config/application.rb 内(など)で定義されている config.active_record.sqlite3.represent_boolean_as_integer の値を nil にする。あるいは、定義しない。false ではだめです。 WARNING の全文 DEPRECATION WARNING: `.represent_boolean_as_intege…
結論 config/application.rb 内で定義されている config.load_defaults の値を 6.0 に変える*1。 WARNING の全文 DEPRECATION WARNING: Sending mail with DeliveryJob and Parameterized::DeliveryJob is deprecated and will be removed in Rails 6.1. Ple…
結論 以下のコードで、単に入力された値を送信することができます。CSRF対策も含まれています*1。 <%= form_with url: hogehoge_path, local: true do %> <input name='foobar'> <%= button_tag 'ボタンに表示される名前', type: 'submit' %> <% end %> 上記の erb を書くと、以下…
gyazo.com 結論 xcode-select を入れ直しましょう。 $ xcode-select --install gyazo.com すると、正常にビルドされるはずです。
結論 以下のようにして bundle install します。 $ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib" $ bundle install 注意点 $ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib" を…
結論 chromedriver-helper の gem はインストールしない。 エラーメッセージが出る場合の実例 $ bundle exec rspec (省略) Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome…
なぜか db:migrate によって作られる Schemafile のクォート記号がダブルクォートであり、Style/StringLiterals に引っかかってしまうから 補足 もちろん除外設定をしていれば問題ありません。
結論 Headless Chrome の設定の箇所において、options で no-sandbox を指定しましょう。例えば以下のようになります。 config.before(:each) do |example| driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400], options: { args: ['n…