ユニコーンリサーチ
R&D
Ruby
Ruby
Photo by
Chad Peltola
curses gem
ターミナル上で動作するインタラクティブなアプリケーションを開発するための古典的なライブラリに curses があります。 サーバーはLinuxの普及度が高いこともあり、cursesベースのアプリを作る …
AbstractController::DoubleRenderErrorの直し方
Railsのコントローラー内で、render()やredirect_to()を複数書くと以下のようなエラーが出る場合があります。 …
Rubyテストのスタブ実装・カバレッジ計測
Rubyのテストは標準のminitestでかなりカバーできますが、スタブ・モック・カバレッジについては、追加gemを利用した方が良いでしょう。 mochaテストダブル mocha gemが提供するスタ …
SameSite=Laxを設定する
CSRF対策は長らくCSRFトークン検証が主流で来ましたが、いまクッキーのSameSite属性で制御する方式に切り替わろうとしています。経緯については CSRF is (really) dead に詳 …
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コマンドじたいは正 …
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に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は全般的に暗黙の規約にもとづいて動作するため、オブジェクト …