2013-07-01から1ヶ月間の記事一覧
概要 TODO,FIXME,OPTIMIZEをrails notesで管理 内容 ソースコード内のTODO,FIXME,OPTIMIZEをrailsのコマンドでリスト参照可能です。 rake notes rake notes:todo rake notes:fixme rake notes:optimize サンプル 対象コード module SampleHelper # TODO: tod…
概要 provideヘルパーでlayoutにパラメータを引き渡す 内容 layoutに動的にパラメータを引渡したいような場合に provideヘルパーを利用します。呼び元 - yield(:key) 呼び先 - provide(:key, value) サンプル view/layouts/application.html.haml !!! %html …
概要 particalでViewの部分レイアウトを適用する 内容 メニューなど、部分的なレイアウトを利用したい場合は 部分テンプレートを利用します。 =render :partial => "folder/template_name" template_nameは実際のファイル名側のみアンダースコアを付与して …
概要 Factory GirlはRubyのテストにおけるFixtureの代替となるツールです。 内容 項目 URL インストール http://d.hatena.ne.jp/tbpg/20130715/1373897239 シーケンスで連番データを作成 http://d.hatena.ne.jp/tbpg/20130717/1374068347 FactoryGirlとsprin…
概要 Factory Girlのインストール 詳細 インストール手順 gemの場合 gem install factory_girl bundlerの場合 Gemfileに下記を追加。 factory_girlが本体。 factory_girl_railsはrailsの自動生成にfactory_girlの自動生成機能を追加します。 gem "factory_gi…
概要 パラメータ化テスト 詳細 RSpecでパラメータ化テストを行う サンプル 仕様 漢数字の一〜十を数値として扱うようにStringクラスを拡張します。 ・漢数字かどうかの検証 ・漢数字から数値への変換 ・漢数字同士の加算 を実装し、それをパラメータ化テスト…
概要 スタブ 詳細 スタブはメソッド呼び出し時に特定の値を戻します。 サンプル 引数で指定されたオブジェクトから生成された乱数と 内部で生成された乱数を元にしたテキストを返却するクラスのテストを行うとします。 テスト対象 # encoding: utf-8 class H…
概要 activesupport::concernによってモジュールのクラスメソッドincludeを簡潔にする 内容 RailsのActiveSupport::Concernを利用することによって Rails以外のRubyプロジェクトでもモジュールのクラスメソッドincludeを簡潔に出来ます。 サンプル仕様 下記…
概要 LTSVの簡易パーサー 詳細 LTSVの簡易パーサーを作成してみました。 仕様 ・シェルから引数を指定しての呼び出しを想定 ・オプションにkey:value形式で絞込み要素を指定 ・valueは大文字小文字無視で絞り込まれる ・複数の絞り込み内容を指定した場合はA…
概要 LTSV 詳細 LTSVとは、「はてな」社内で主にログの出力形式として利用されている ファイルフォーマットです。 具体的にはTSVにラベルを付与した形式になります。 key1:value1_1 key2:value2_1 key1:value1_2 key2:value2_2従来のログ出力フォーマットは…
概要 ログ管理について 詳細 Logback 項目 内容 Logbackでログ文字列のカラー定義を行う http://d.hatena.ne.jp/tbpg/20130714/1373816560 xmlの読み込み状況を確認する http://d.hatena.ne.jp/tbpg/20131009/1381325064 LTSV 項目 内容 LTSV http://d.haten…
概要 Logbackでログ文字列のカラー定義を行う 詳細 Logbackでログ文字列のカラー定義を行います。 logback.xmlのpattern要素に下記のような指定をすることで カラー定義が可能です。 <pattern> [%thread] %-5level %cyan(%logger{15}) - red(%msg) %n </pattern> ※loggerをシア…
概要 Ruby用BDDフレームワークRSpecについて。 詳細 基礎 項目 内容 rspec-core describe/context/it/example/specify http://d.hatena.ne.jp/tbpg/20140415/1397569471 rspec-core shared examples http://d.hatena.ne.jp/tbpg/20140415/1397569770 metadat…
概要 モック 詳細 モックは特定の引数でメソッド呼び出し時に特定の値を戻します。 スタブは単純に特定の値を返却するのに対し、モックは特定のコンテキストに応じた値を返却します。 サンプル 引数で指定されたオブジェクトから生成された乱数と 内部で生成…
概要 ユーザー認証時にBCrypによる暗号化を行う 内容 サンプル 要件 ・ユーザー作成画面から新規ユーザーのパスワードを暗号化登録 ・サインイン画面からDBの暗号化されたパスワードで認証を行う Gemfileで'bcrypt-ruby'を指定します 'bcrypt-ruby', '~>3.0.…
概要 標準のValidationメッセージを日本語化する 内容 Railsの組み込みバリデーションはエラーメッセージが英語のため 設定を変更する必要があります。 設定手順 ・下記からファイルをダウンロードします。 https://github.com/svenfuchs/rails-i18n/blob/ma…
概要 ラベルの利用 内容 下記でRailsのビューにラベルを定義できます。 label_tag(要素名 [, ラベル配下のコンテンツ] [, オプション]) 製造 View %h1 Book#new %p Find me in app/views/book/new.html.haml %hr/ = link_to '戻る', :controller => 'book', …
概要 テキストボックスの利用 内容 下記でRailsのビューにテキストボックスを定義できます。 text_field_tag(要素名 [, 値, オプション]) 製造 View %h1 Book#new %p Find me in app/views/book/new.html.haml %hr/ = link_to '戻る', :controller => 'book'…
概要 標準的な登録画面の作成 内容 書籍を登録する画面を作成します。 登録情報は以下。 書籍名:テキスト ISBN-CODE:最大13桁テキスト 税抜き価格:数値(整数) DB定義 mysql> desc books; +------------+--------------+------+-----+---------+--------…
概要 ブラウザ上でrouteの設定を確認 内容 下記URLからrouteの設定をブラウザ上から確認可能です。 http://localhost:3000/rails/info/routes 画像
概要 Controller・Model配下にconcernsディレクトリを追加 内容 Railsは規約で構成が決まっている反面、controller・modelが肥大化して 「fat」なものになりがちでした。 ※特にModelが肥大化するその解決策として controllers/concerns modle/concernsが新構…
概要 古いハッシュ形式のダイナミックファインダの廃止 内容 Rails4では古いハッシュ形式のダイナミックファインダの廃止になりました。旧形式 Model.find_by_name "input_name" Model.find_all_by_name "input_name" Model.find(: all) "input_name" 推奨形…
概要 ActionArgsでリクエストパラメータを個別の引数として受け取る 内容 Railsの標準ではリクエストパラメータは以下のように取得します。 def hoge @hoge = params[:hoge] @hage = params[:hage] @hige = params[:hige] end 毎回、paramsから取得する必要…
概要 Migrationでテーブルにカラムを追加、削除する 内容 Migrationでテーブルにカラムを追加、削除するするには以下を利用します。 rails g migration add_column_name_to_table_name column_name:data_type rails g migration remove_column_name_from_tab…
概要 システム全体で利用する定数の配置 内容 システム全体で利用する定数の配置は以下です。 config/initializers/constants.rb サンプル config/initializers/constants.rb HOGE = "hoge" HAGE = "hage" HIGE = "hige"
概要 ActionMailerでRailsからメールを送信する 内容 Railsでメール送信を行うにはActionMailerを利用します。 サンプル development.rb(test.rb,production.rb) config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method =…
概要 セキュアでランダムなURLに利用可能なトークンの取得 内容 セキュアでランダムなURLに利用可能なトークンの取得するには以下を利用します。 token = SecureRandom::urlsafe_base64(64)
概要 Railsコマンドの省略系 内容 コマンド 省略系 動作 rails server rails s サーバーの起動 rails generate model xxx rails g mode xxx 自動生成 rails destroy model xxx rails d model xxx 自動削除
概要 Spring(preloader)でRails・Rakeコマンドを高速化 内容 Spring(preloader)でRails・Rakeコマンドを高速化します。 サンプル bundler設定 group :development, :test do gem "spring", "~> 0.0.10" end Springの実行 下記のコマンドで利用可能です b…
概要 Modelの削除 内容 Railsの自動生成機能でModelを生成します。 rails d model model_name サンプル 削除実行 ※RSpec、Haml環境です。デフォルト構成ならTest,ERBが生成されます $ rails d model product invoke active_record remove db/migrate/2013070…