Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby on Rails

ActiveSupport | 各種ロード方法

概要 各種ロード方法 詳細 部分ロード(一定のテーマに基づくメソッド単位) core_ext/array/accessなどクラスレベル+テーマごとに分割されて作成されているメソッド群単位で利用する。 下記はcore_ext/array/accessのみを利用する場合の例です。 # encodin…

Ruby on Rails | Unicorn + Nginx環境の疎通(Ubuntu 1204)

概要 Unicorn + Nginx環境の疎通(Ubuntu 1204) 前提 ・Rails環境(Ruby2.0.0-p247 + Rails4.0.0)は構築済み。 ・gemにunicornを指定してインストール済み。 ・apt-getでnginxをインストール済み。 ・Railsのプロジェクト名は「greedents」 手順 /etc/nginx/…

Ruby on Rails | Rails4環境でbundle execを省略するための設定

概要 Rails4環境でbundle execを省略するための設定 詳細 Rails4環境でbundle execを省略するための設定について 手順 ・rbenv-binstubsをGitHubよりCloneします ・「~/.bundle/config」に下記を追記 BUNDLE_BIN: bin※上記手順の詳細はVagrantfile中で確認・…

backbornjs | RailsのServer側のValidationエラーの制御

概要 Server側のValidationエラーの制御 詳細 Server側のValidationエラーの制御について。 サンプル Scaffoldを利用した時の新規登録処理を元に説明。 モデルはTODOでsubjectが必須項目とする。 新規登録View views/todos/new_view.js.coffee jqXHR.respons…

Ruby on Rails | Reek | ReekのUtilityFunction警告がclass << selfに対応していない

概要 ReekのUtilityFunction警告がclass 詳細 ReekのUtilityFunction警告がclass class << self def class_method # : 実処理 end end を def self.class_method # : 実処理 end で書かないと、ユーティリティ関数のチェック(UtilityFunction)に引っかか…

Ruby on Rails | Webric ServerをDeamonで起動、終了する

概要 Webric ServerをDeamonで起動、終了する 詳細 Webric ServerをDeamonで起動、終了します 設定 サーバー起動用bash start.bash ※-dのオプションがデーモン起動 #!/bin/bash bundle exec rails s -d -e production サーバー起動用rakeタスク start.rake d…

Ruby on Rails | Rails+MiniTestでカスタムマッチャーを作成する

概要 Rails+MiniTestでカスタムマッチャーを作成する 内容 Rails+MiniTestでカスタムマッチャーを作成します。 手順 Gemfileに下記を追加 gem "minitest-matchers", "~> 1.3.0" サンプル 仕様 ・任意のモデルの内容を検証する ・指定したハッシュのキーで、…

Ruby | metric_fu | 特定の箇所のコードの臭いを無視したい場合 〜 臭いものには蓋をする

概要 特定の箇所のコードの臭いを無視したい場合 詳細 特定の箇所のコードの臭いを無視したい場合について。 metric_fuはコードのメトリクス分析をしてくれる便利なツールですが、事情つきで 臭いを放置したい場合があります。 しかし、そのままにしておくと…

Capybara | Capybaraでブラウザ標準ダイアログを操作する

概要 Capybaraでブラウザ標準ダイアログを操作する方法 内容 Capybaraでブラウザ標準ダイアログを操作する方法について。 下記コマンドで対応可能。 ただし、下記はドライバーがSelenium時のみ利用可能のため Poltergeistでは動作しない。 ブラウザ起動有・…

Ruby on Rails | metric_fu | 設定

概要 metric_fuの各種項目設定について 詳細 まずは.metricsファイルを作成。その中に個別のメトリクスツールの設定ファイルへの参照を設定します。 例はCaneの設定ファイルの設定コードです。 .metrics MetricFu::Configuration.run do |config| config.con…

Ruby on Rails | Capybaraテスト用のDBクリア処理を独自実装する

概要 Capybaraテスト用のDBクリア処理を独自実装する 内容 Capybaraでjsを含むテストを行う際のDBクリア処理を独自実装します。 Capybara+RSPec構成の時はDBCleanerで同様の内容を行ったのですが、 Mini::Test(ActiveSupport::TestCase)の際はDBCleanerが…

Ruby on Rails | Railsプラグインの開発時にrakeタスクを作成する方法

概要 Railsプラグインの開発時にrakeタスクを作成する方法 内容 Railsプラグインの開発時にrakeタスクを作成する方法について。 プラグインのプロジェクト内ではなく、プラグインをGemとして利用する側で 使うrakeを想定しています。 作成手順 ・デフォルト…

Ruby on Rails | backbone-railsのscaffoldでサンプルページの作成

概要 backbone-railsサンプルページの作成 詳細 backbone-railsサンプルページの作成をします。 自動生成 railsのscaffoldを実行 rails g scaffold Todo subject:string detail:string status_id:integer estimate:integer assignee:integer assigner:intege…

Ruby on Rails | backbone-rails導入

概要 backbone-rails導入 詳細 jsのMVCフレームワークbackbone-railsを導入します。 設定 Gemfileに下記を追加 gem "rails-backbone", "~> 0.9.10" Bundlerの実行 bundle backbone-railsをpublicにコピー rails g backbone:install ※ここでエラーが出る場合…

Ruby on Rails | Rakeタスクに引数を渡す

概要 Rakeタスクに引数を渡す 内容 Rakeタスクに引数を渡します。 rake task_name[args1,args2] サンプル hoge.rake # encoding: utf-8 namespace :hoge do task :hage, ['hige', 'hege'] => :environment do |task, args| puts args.hige puts args.hege en…

Ruby on Rails | ActionMailerのテストを行う

概要 ActionMailerのテストを行う 内容 ActionMailerのテストを行います。 メールは実際に送信しない設定にしている前提です。 テスト方法 test.rbで config.action_mailer.delivery_method = :test を設定。RSpecの任意の箇所で下記を呼び出す # 最後に送信…

Ruby on Rails | metric_fu | Rails Best Practices | use query attribute

概要 use query attributeへの対応 詳細 Railsでモデルの属性に対して、blank?やpresent?を利用する際は 以下のように記述を省略できる model.column? 修正前 if model.column.blank? if model.column.present? 修正後 unless model.column? if model?

Ruby on Rails | metric_fu | Rails Best Practices | Simplify render in views

概要 Simplify render in viewsへの対応 詳細 partialのrenderを指定する際に、:partialの部分や、 optionの:localsの部分は省略可能、という警告。 修正前 = render :partial => "yes_no_all_radio", :locals => {object_name: "user", property_name: "adm…

Ruby on Rails | metric_fu | Rails Best Practices | simplify render in controllers

概要 simplify render in controllersへの対応 詳細 Controller内でのrender指定時にactionのみ指定する場合は、明示的にハッシュのキーを指定しなくても よいので記述を簡潔にできる、という警告。 修正前 render :action => 'index' 修正後 render 'index'

Ruby on Rails | metric_fu | Rails Best Practices | replace instance variable with local variable

概要 replace instance variable with local variableへの対応 詳細 particalなビューを利用する場合に、インスタンス変数の利用箇所を ローカル変数に置き換えることで再利用性を高めるように、という警告。 render :locals => {key: value, key: value ・…

Ruby on Rails | metric_fuでメトリクス分析

概要 metric_fuでメトリクス分析 詳細 metric_fuでメトリクス分析を行います。 設定 Gemfileに下記を追加 gem "metric_fu", "~> 4.3.1" Bundlerを実行 bundle メトリクス分析の実行 rake metrics:all 結果を確認する %project_root%/tmp/metric_fu/output/in…

Ruby on Rails | Kaminariを利用して一覧にページャーを設定

概要 Kaminariを利用して一覧にページャーを設定 詳細 Kaminariを利用して一覧にページャーを設定します。 設定 Gemfileに下記を追加 gem "kaminari", "~> 0.14.1" Bundlerを実行 bundle デフォルトの設定ファイルを生成 rails g kaminari:config 下記のファ…

Ruby on Rails | 一覧のソート

概要 一覧のソート 詳細 一覧のソート機能を実装します。 サンプル 仕様 テーブル構造の一覧のヘッダーにあるリンクをクリックすると 昇順降順を切り替えてソートする。 アイコンはKickstartを使用。 単一項目によるソートのみ対応。 page.js.coffee Coffee …

Ruby on Rails | リンクからGET以外のメソッドをJavaScriptで送信する

概要 リンクからGET以外のメソッドをJavaScriptで送信する 詳細 リンクからGET以外のメソッドをJavaScriptで送信します。 link_toヘルパーを利用した場合は link_to "label", "url", method: :deleteなどのオプションで指定できますが、JavaScript内から制御…

Ruby on Rails | konacha + ejsでCoffeeScriptのテスト内にHTMLのテンプレートを使用

概要 konacha + ejsでCoffeeScriptのテスト内にHTMLのテンプレートを使用 詳細 konacha + ejsでCoffeeScriptのテスト内にHTMLのテンプレートを使用します。 設定 Gemfileに以下を追加 gem "ejs", "~> 1.1.1" サンプル 仕様 入力フォームをクリアする機能のテ…

Ruby on Rails | ルーティング | resourcesのRESTfulインターフェースから一部を除外

概要 resourcesのRESTfulインターフェースから一部を除外 詳細 resourcesのRESTfulインターフェースから一部を除外します。 サンプル routes.rb resources :hoges,:except => :show rouetsの確認 showへのルーティングがなくなっていることを確認 rake route…

Ruby on Rails | ルーティング | RESTfulインターフェースを定義

概要 RESTfulインターフェースを定義 詳細 RESTfulインターフェースを定義します。 RailsでRESTfulインターフェースを定義するにはroutes.rbで以下の記述をします。 routes :controller_name 上記の定義によって生成されるルーティングについてはサンプルを…

Ruby on Rails | konachaによるCoffeeScriptのテスト

概要 konachaによるCoffeeScriptのテスト 詳細 konachaによってCoffeeScriptをRSpecライクな記法でテストします。 設定 ・Gemfilenに下記を追加 gem "konacha", "~> 3.0.0" ・Bundlerの実行 bundle ・spec/javascriptsディレクトリを作成 ・config/initializ…

Ruby on Rails | I18nでプレースホルダーを利用する

概要 I18nでプレースホルダーを利用する 詳細 I18nでプレースホルダーを利用します。 サンプル ja.yml hoge: hige: "%{hage}さん" hoge.haml %p = t('hoge.hige', {hage: "はげ"}) 出力 はげさん

Ruby on Rails | テーブルのカラム名変更

概要 テーブルのカラム名変更 詳細 テーブルのカラム名変更をします。 実施 hogeテーブルのhoge列をhige列にリネームします。 rails g migration rename_hoge_hoge class RenameHogeHoge < ActiveRecord::Migration def up rename_column :hoges, :hoge, :hi…