HOME
R&D
Ruby
Ruby
Photo by
Chad Peltola
curses gem
ターミナル上で動作するインタラクティブなアプリケーションを開発するための古典的なライブラリに cursesがあります。 サーバーはLinuxの普及度が高いこともあり、cursesベースのアプリを作る …
ランダム名前生成 Faker
セキュリティ対策やデモなどの目的で、ランダムな名前を生成するツールがあると便利です。 Fakerは、多彩な名称を生成することに特化したRuby gemです。 用途別のメソッドを呼ぶたびに、名称の文字列 …
AbstractController::DoubleRenderErrorの直し方
Railsのコントローラー内で、render()やredirect_to()を複数書くと以下のようなエラーが出る場合があります。 …
Railsジェネレータのテンプレートをカスタマイズ
Ruby on Railsはscaffoldが有名です。rails generateコマンドによりREST構造のスケルトンを生成できるものです。このジェネレータはscaffold以外にもテンプレートを …
Rubyのテストにスタブを実装する
Rubyのテストは標準のminitestでかなりカバーできますが、スタブとモックについては、 mocha gemを利用した方が良いでしょう。 スタブやモックは、テスト対象のコードが呼び出している一部の …
SameSite=Laxを設定する
CSRF対策は長らくCSRFトークン検証が主流で来ましたが、いまクッキーのSameSite属性で制御する方式に切り替わろうとしています。経緯については CSRF is (really) deadに詳し …
目的別、bundlerの利用法
bundlerは、Gemfileに記述したRuby gemsを維持するパッケージマネージャです。複数のプロジェクトを管理する場合には、bundlerの挙動をよく理解しておくと便利です。 bundler …
RDocの使い方
RubyやRailsプロジェクトのドキュメント生成ツールには、ruby標準の RDocが便利です。 大規模な利用例としては、 Rails APIがあり、 コードリポジトリから生成されているはずです。 …
Railsのテストの書き方
前提知識 Railsのテストは、Ruby標準のテスト機能であるMinitestをWeb向けに拡張したもので、両方のリファレンスを活用します。 Railsテスティングガイド Railsのテスト方法に関す …
Ruby自作ライブラリの管理
Rubyで開発した複数のライブラリを組み合わせてメンテナンスする場合、まずはrequireで利用できるようにパッケージ管理を確保すると便利です。Ruby標準のbundlerを利用すると、以下のとおりラ …
migrationでCURRENT_TIMESTAMPを使用する方法
Railsのマイグレーションやridgepoleの t.timestamps でタイムスタンプが自動生成されますが、デフォルト値にDBMSの時刻取得機能を使用したい場合、以下のように指定すると反映され …
Rails5.1の主キーbigint移行
RailsのPRIMARY KEY(id)はデフォルトでAUTOINCREMENT付きINTEGERですが、Rails5.1でより大きなレコード数を扱えるようBIGINTに拡張されました。 この影響 …
bundlerの参照Gemfile設定
bundle installで依存パッケージをインストールしようとした際、カレントディレクトリのGemfileが参照されず、意図したパッケージが入らないことがあります。 bundleコマンドじたいは正 …
Rails標準のテスト準備
Railsのテストツールはminitestがバンドルされています。rails testコマンドがテストランナーのコマンドです。以下の指定方法をよく使いますが、さらに細かいオプションで単体ケースの実行な …
Active Recordを使わない方法
一般的にはRuby on RailsのデータアクセスにActiveRecordを利用しますが、rails new my_app -OオプションでActive Record抜きのプロジェクトを作成できま …
RailsのJavascript(非アセットパイプライン)
RailsアプリケーションでもJavascriptを多用していますが、当初からアセットパイプラインに乗ることなく開発を進めています。 Javascriptのライブラリを導入する場合、Railsのレイア …
RubyのCSV読み込みエラー対処法
RubyのCSVクラスは、ファイル末尾に改行文字(\n, \r\nなど)が付いていると、読み込み時に”Unquoted fields do not allow \r or \n”エラーとなり停止するこ …
RSpecでログイン状態のテスト
RailsのWebサービス開発をテストする際、Controllerをログイン状態別にテストしたいシーンが多々あります。 この場合の、もっともプリミティブなテスト設計は以下のようなものになると考えていま …
Railsのトランザクションとその注意点
Railsのトランザクションは、ActiveRecordの標準機能として手軽に利用できます。 トランザクションとは、 ACID的な意味で2つ以上の処理をAtomicに実行する機能で、銀行の口座間振替処 …
既存のRailsにReact.jsを導入する
React.jsは、ネイティブアプリのようにインタラクティブなUIを作りやすくするためのJavascriptライブラリです。 従来、Webサービス分野ではjQueryが近い機能を果たしてきました …
unicornを再起動する
Ruby on Railsでコードを書き換えた場合、アプリケーションサーバーを再起動して反映する必要があるケースに直面します。 unicornを使用している場合、killで以下の3種類のシグナル …
Rails標準のi18n機能による日本語化まとめ
各ファイルの用途 Ruby on Railsのi18n(国際化)標準機能では、以下の設定ファイル・カタログファイル・Viewテンプレートで多言語カタログを定義できます。 …
Railsオブジェクトの複数形を確認する方法
Railsでは、Modelが英語の単数形でテーブル名称が複数形になる、など、英語の単数形・複数形の対応を確認しておく必要があります。Railsは全般的に暗黙の規約にもとづいて動作するため、オブジェクト …
dockerでRailsの開発環境を手軽に準備
Ruby on Railsの開発環境は、新しいバージョンのruby環境とbundlerがあれば比較的簡単に整備できます。 dockerhubの Ruby公式イメージはbundlerまでセットアップ済み …