ブログ

読んで思い出す。忘れるために書く

Ruby on Rails

Docker 環境の Rails プロジェクトで RSpec を監視・実行する (fswatch)

Docker 環境であっても コンテナが気軽に増設できるなら guard-rspec を立ち上げてもいい 今回は ShellScript で何とかするパターン ゴール docker compose up で立ち上げたコンテナ内で、rspec を実行したい ローカル環境で *_spec.rb ファイルを更新したら…

Q. reCAPTCHA の Ruby 側コードが分かりづらい

A. まとめるとこうなる gist.github.com

node-sass インストール時に gyp 関連でエラーが出た

Rails 使ってるのに Node.js とか Python とか云われても わからん... 環境 概要・状況 原因 解決 ログ全文 ログの見方 Links 環境 MacOS Big Sur Ver.11.1 anyenv + pyenv 概要・状況 Rais プロジェクトで yarn install したら node-sass をインストールす…

複数 Rails インストール済み環境でのバージョン切り替え挙動について

※ GitHub Issue に調査結果を書いた のでこちらにも転載 Rails の複数バージョンがインストールされている環境で、どのようにバージョンが切り替わるのか、調査 TL;DR プロジェクトディレクトリの内外で、Rails に訊ねたバージョンが切り替わる 状況説明 & …

Q. Rails の params.permit に関わる最小限のコードを書きたい

A. ドキュメント ActionController::Parameters#permit を参照して、サンプルコードを動かす require 'active_support/core_ext' require 'action_controller/metal/strong_parameters' params = ActionController::Parameters.new({ person: { name: "Franc…

OpenWeatherMap API と連携して天気予報を表示する

「Ruby on Rails - Rails 天気予報取得 表示|teratail」で、質問者によって書かれた JavaScript との連携方法を調べてみた リポジトリ 書いたコード 大まかな処理内容 Links リポジトリ GitHub にリポジトリを作った : gouf/open_weather_map_demo - GitHub…

Q. Rails で可逆暗号を使いたい (Rails 6)

A. ActiveSupport::MessageEncryptor を利用する 暗号化・復号化例 Links 暗号化・復号化例 # # ActiveSupport::MessageEncryptor#new で扱える key の長さが # 決まっているのでその定義を呼び出して使う # # salt の生成 # # NOTE: このままだと実行時に再…

Techpit 教材をつかったモクモク会に参加した (Trello風ToDoタスク管理アプリ)

「【Railsアプリ開発講座】Trello風ToDoタスク管理アプリを作成しよう!」に参加した カリキュラムに沿って完成させて、その次の日に機能追加した話 完成したもの アプリの動作 (リストとカード) 完成品の改変 コードの公開について Drag & Drop API <form/> の追加</form/>…

コントローラに書かれた API へのリクエスト処理を lib/ に移行する (リファクタリング)

(外部API を利用しているコードの) テストコード... の書き方がわからなかったので Pull Request として作成するのはパス でも手を動かしたので記録しておく Q&A サイトでのやり取り (Ruby - RailsアプリをHerokuへデプロイ後、ぐるなびAPIが検索結果を返さ…

Array#include? と Object#in? をつかう

まとめ include? と in? Links まとめ 「だれがどうしたのか」「どうしたのはだれか」みたいな文の主従の順序・逆転は些細なものかもしれない それでも、コードも文章の1つ、読み易しいコードを書いていきたい include? と in? たとえば、普段であれば次のよ…

Q. spec/fixtures に定義した fixture をrake で読み込みたい

A. FIXTURES_DIR 環境変数を指定する (Rails 4系で確認) rake db:fixtures:load FIXTURES=users FIXTURES_DIR=../../spec/fixtures rake タスクだと固定で test/fixtures を見に行くので、../../ 指定で見に行くディレクトリを遡らせる dotenv を使っている…

Q. 値があったときのみ検索したい (ActiveRecord)

A. scope と if と all を使う (自回答の転記) teratail.com class Board < ActiveRecord::Base scope :mypage_search, ->(user_id, search_params = {}) do where(user_id: user_id) .find_by_board_title(search_params[:title]) .find_by_update_date(sea…

Q. Travis CI でエラー: "Migrations are pending. To resolve this issue..." が出てテストがコケる

A. rails db:migrate コマンドを実行する どこで...? → .travis.yml の before_script のタイミング language: ruby rvm: - 2.3.4 - 2.5.0 before_script: - RAILS_ENV=test bundle e rails db:migrate Travis CI のビルドの各ステップで実行されるタイミン…

ボタンクリックで固定メッセージをブロードキャストする

「なにか新しいことを始めるときは最小限のコードを書く」というのをやりたかった Rails の ActionCable によるメッセージ送信を実装してみた: github.com ここから、「メッセージのデータに部屋名を含めて該当する部屋のみに送信する」だとか「テキスト入…

プロジェクト初期化時に rack-mini-profiler を有効化する

自リポジトリにコミットした README.md の通り gem を追加して rails g rack_profiler:install しているだけのコード github.com 開発環境でのページに、表示されるまでの速度が出てくるようになった これで 常に処理速度を意識したマゾい開発ができるように…

Q. Rails のバージョンアップで変わった部分を具体的に知りたい

A. RailsDiff にアクセスして差分の表示をさせる eg. 5.1.6 → 5.2.0 の差分を知りたい: http://railsdiff.org/5.1.6/5.2.0 Link RailsDiff

bullet gem の設定を最初から有効にする

アプリケーション テンプレート機能を利用したコードを追記 自リポジトリにコミットした github.com これでアプリケーション初期化時に bullet が有効になって、今後 N+1 問題が発生したときに警告してくれる まとめ アプリケーション テンプレート? Bullet…

日付の前後を比較するバリデーションを書く

自回答の転記 teratail.com やりたいこと テストコードと実装 テストコード 実装 Links

件数の多い処理をグループ分けして開始時間を遅らせる(ActiveJob)

「趣味プロジェクトで実装を書いたよ」というお話 github.com 説明しないこと 状況 アイディア 実装 Heroku Scheduler Links

Heroku で環境を立ち上げるたびにデータベースがなくてエラーになる(Rails)

前提 Rails アプリケーションを作っていて、Heroku にデプロイしている Review Apps 機能を利用した Pull Request ごとに新しく環境を立ち上げる仕組みを取り入れている 問題 Pull Request を受けて 新規に立ち上げられた環境にアクセスしてみると「Somethin…

raty-js を使ったレビューの評価値操作を実装する(Rails)

gouf.hatenablog.com Raty を使ったレビュー機能(星マークの表示)の導入方法について調べたので、実際に作ってみた github.com Raty によるレーティングの変更 初期化時のレーティング値取得 Raty によるレーティングの変更 Raty は初期化時に target オプシ…

Rails 5.1.x に raty-js を導入する(yarn)

teratail.com 質問に出てきた Raty が気になったので、 Rails に統合する方法を調べてみた これに続く: gouf.hatenablog.com 概要 前提 手順 JS ライブラリの追加 JS の読み込み CSS の読み込み 使ってみる フォントではなく画像を表示させたい場合 Links

<table/> 形式でカレンダーを表示させる(ヘルパーメソッド)

teratail.com qiita.com 質問で見掛けたので、参照元のコードをヘルパーメソッドに書き換えてみた まとめ コード Link まとめ これに、インスタンス群(= 配列)を受け付けられるように引数を増やしたりすれば、もう少しくらいはカスタマイズしたり機能が増や…

Rails で曜日を元にユーザを検索する (SQlite3)

リポジトリ作った(11 コミット) User データの updated_at を、0から6の数値化した曜日に変換して検索できるようにする github.com まとめ データベースが用意してくれている日付フォーマット関数(日時を曜日に変換など)を利用する 日付フォーマット関数を使…

文字列によるメソッド呼び出しとループ処理による絞り込み

書いたところで 誰も しあわせにしないコード まとめ コードの書き換え Links まとめ (この例では有効ではなかったけれど) if...elsif... が続くコードは、case...when やループ処理に変換できないか検討してみるといいかもしれない 下の質問に書かれてたコ…

Q. Rails のマイグレーションって適用したあとまた編集していいの?

A. 基本的にはナシ とくに、過去のマイグレーション ファイルは編集してはならない

Rails に WYSIWYG エディタ Froala を召喚する

リポジトリつくった(全体で7コミット) github.com 詳細はコミットログ参照のこと <textarea/> に JavaScript での初期化を仕掛けて、いい感じのエディタを召喚できる キャプチャ画像はプラグインとか何も入れてないスッピンの状態 30 に届きそうな数のプラグインで拡張</textarea/>…

指定バージョンで rails new する

Rails開発環境の構築(複数バージョン共存可能)(Homebrew編) - Qiita Ruby on Rails 4 - rails sでローカルサーバーを立ち上げたいのですが、以下のエラーが出てしまいます。(101118)|teratail バージョンごとに新規作成するコマンドがあったらベンリか…

gem を使わずにRails で LIKE OR 検索

ネタ。こういうコードを書き始める前に ransack gem の使い方を学習したほうがいいのかもしれない ビュー: / views/articles/index.html.slim = form_tag 'articles/search' = text_field_tag :q, 'Lorem Ipsum' = submit_tag 'Search' コントローラ: class …