プログラミング -> Ruby on Rails
結論 libmysqlclient-dev を入れましょう*1。 $ sudo apt install -y libmysqlclient-dev これで bundle install が通るはずです。 参考 検索用に、エラーメッセージ例です。 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current d…
前提条件 以下のような環境です。 Ruby のイメージは circleci/ruby:3.0.2 データベースは PostgreSQL エラーメッセージ 以下のようなエラーメッセージが出ます。 #!/bin/bash -eo pipefail bundle exec rails db:create rails aborted! LoadError: libffi.s…
gyazo.com 現象 以下のようなエラーメッセージが出る場合です。 An error occurred while installing mimemagic (0.3.9), and Bundler cannot continue. Make sure that `gem install mimemagic -v '0.3.9' --source 'https://rubygems.org/'` succeeds befo…
結論 設定の Test Framework の項目で明示的にテストに用いるフレームワーク*1 を指定するといける場合があります。 gyazo.com *1:RSpec とか Minitest とか
結論 --example オプションを使い、その値として「テストの名前」を入れます。 例 以下のような Spec があったとします。 feature 'おはよう' do scenario 'こんにちは' do # ここにテストが入る end end このとき、このテストを実行するためには次のコマン…
結論 コマンドの実行パスを絶対パスで書く。 実例 以下は Ruby Test Explorer の設定です。ここで実行コマンドパスを設定する箇所において、絶対パスでパスを記述します。 例えば、 .rbenv を使っている場合は /home/ここにユーザー名が入る/.rbenv/shims/bu…
現象 次のようなエラーが出る場合の対処法です。 Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: exited abnormally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome locat…
結論 標題で全てな気がするのですが、以下の例のとおりです。自前で nil を代入した場合には、そのカラムは DEFAULT の値が自動で入ってくれません*1。 例として、User というモデルを使います。ここで、height というカラムに NOT NULL 制約がついていて、D…
結論 google-chrome と chromedriver のバージョンを変える(まずは最新の安定版で試す)。 参考 2021/05/20 時点で正しく動いているバージョンの組み合わせは次のとおりです。 $ google-chrome --version Google Chrome 90.0.4430.212 $ chromedriver --ver…
前提 CSRF対策を無効にするというのは原則避けるべきです form_authenticity_token というグローバルな変数にトークンが格納されています authenticity_token という params を POST 時に送っているので、そこに適切なトークンを格納すれば ActionController…
結論 公式ドキュメントにある演算子を用いましょう。 www.postgresql.org ドキュメントの読み方 上記ドキュメントの読み方についてです。 例えば jsonb ->> text → text という記載内容は次の意味を持ちます。 jsonb には、検索対象となるデータが入る(= J…
結論 任意の名前のモデルを作成し、establish_connection と self.table_name を用いる。 具体例 例えば、外部のデータベースの接続情報が以下の通りであるとします。これは config/database.yml に書いておきます。 external_my_db: adapter: postgresql en…
結論 ModelName.establish_connection を用いて環境を切り替えながらオブジェクトを操作する。 www.rubydoc.info 実例 production モードで $ bin/rails console を起動したとします。そして User.find(123) で得られるデータを development モードの User …
現象 gyazo.com 対策 config/application.rb 内で、config.hosts に対して許可するホストを配列で追加します。 正規表現が使えますし、サブドメインにワイルドカードを用いたい場合は例えば .example.com と指定すれば *.example.com を指定したことになりま…
結論 expect(page).to have_current_path hogehoge_path(foo: 'bar', hello: 'world') 上記のように書くことで、 hogehoge_path の URL に、 foo=bar と、 hello=world の、 パラメータが付与されているかどうかを確認できます。
結論 page.all(.hoge.fuga) というふうに書き、戻り値が配列になるのでそれを取り扱う。 例 .foobar.hogehoge という要素がページの中に 3つ あるとします。 このとき「要素が 3つ あること」をテストするには次のように書きます。 expect(page.all('.foobar…
結論 1. google-chrome をインストールします 詳細は割愛します*1 配置場所は /opt/google/chrome 配下になるかと思います 2. chromedriver をインストールします 詳細は割愛します (参考)インストール方法 配置場所は /usr/bin/chromedriver になるかと思…
結論 (もろもろの設定は済んでいるとして)X Server が起動しているかどうか。 補足 エラーが出るわけではなく一向に進まないため、気づかないときはなかなか気づきにくい点かと思います。
前提条件 google-chrome と chromedriver*1 はインストール済みとします。 結論 rails_helper.rb に以下の行を追加します。chromedriver のパスは個々人のインストール場所によって書き換えます。 Selenium::WebDriver::Chrome::Service.driver_path = '/usr…
結論 pry のバージョンを 0.12.2 に固定する*1。 理由 理由は、記事引用になりますが、以下になります(感謝)。 attonblog.blogspot.com *1:0.13.x 以降に上げない
はじめに 本記事のタイトルは、以下の記事にならっています。 overreacted.io また、以下の記事に触発されています。 blog.unasuke.com zenn.dev 結論 以下のことをほとんど知りません。 Go React TypeScript Prisma GraphQL Cypress 焦り 上記のことに無知…
結論 app/decorators 参考 Decorator (Draper) については以下の記事がまとまりすぎているので、参照することをおすすめします。 nekorails.hatenablog.com
実例 配列に含まれる各要素の文字列が hoge- で始まっているかどうかを判別するコードを書きます。全ての要素が hoge- で始まっている場合には true が返ってくるコードを書くことを目的とします。 例1 まずは次のようなコードです。この戻り値は true で期…
結論 標題のとおりですが、Rails.application.credentials を用いている場合に、それがクリティカルな場所であると rails s にたどり着くことさえできなくなります。 したがって、config/credentials.yml.enc と master.key を作り直してもらうこと前提で、…
結論 true or false で返すのではなく、errors.add(:HOGEHOGE, '正しい値を入力して下さい!!') を書く必要があります。 参考
結論 以下のページから最新版のバイナリをダウンロードし、パスが通った場所に実行可能状態で配置すれば OK です。 sites.google.com 補足 RSpecの〜 という標題にしましたが*1、もちろん他の用途にも使えます。 *1:ググラビリティを考慮
結論 巨大な Rails プロジェクトを開くと、VS Code の Ruby 拡張機能 によりコードのインデックシングが始まります。インデックシングの最中は以下のメッセージがステータスバーに表示されます。 Indexing Ruby source files このとき、CPU負荷率が急激に高…
結論 標題のとおりです。binding.pry の場所によっては出てきません。 補足 binding.pry を削除してもまだ出てこない場合は、Chrome を再起動しましょう。
※現時点での Rails を用いた場合です 結論 以下のコードを起動時に読み込ませるようにすれば、config/locales 配下のファイルに従って i18n してくれます*1。 I18n.config.available_locales = %i[en ja] I18n.default_locale = :ja 読み込ませる場所はどこ…
結論 1. rb-readline の gem をインストールする $ gem install rb-readline 2. .pryrc に以下のように書きます。 .pryrc は Ruby のスクリプトの形で書きます。 require 'rb-readline' require 'readline' if defined?(RbReadline) def RbReadline.rl_rever…