おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

rails

Rails4.0に含まれる strong_parameters について

注意 このエントリは急いで書いたので間違いが含まれている可能性が高いです。気づいた方はご指摘ください。 序文 strong_parameters とは、mass assignment で余計なパラメータをモデルの属性にセットさせないための新しい仕組みです。Rails 4.0 からはこれ…

エラー通知用ウェブサービス airbrake のメモ

エラー通知用のウェブサービス Airbrake の ruby 用プラグイン airbrake の README を一部和訳したメモを発掘したので載せておきます。 airbrake は exception_notification とは違い同種のエラーであれば複数回発生しても通知は一回だけ送られるのと、web上…

Object#in?(*args)

#385 Authorization from Scratch Part 1 (pro) - RailsCasts を見ていて気づいたのでメモ。 Ruby on Rails Documentation に書いてあったコード例をみると分かるけど、include? の逆パターンですね。基本的には include? 使えばいいと思いますが、場合によ…

Hash#slice

strong_parameters のソース読んでたら Hash#slice が使われていることに気づいて、「あれ、こんなメソッドあったっけ?」となり調べてみました。どうやら Rails(ActiveSupport) で hash を拡張しているようです。 引数の key だけを含む hash を返します。…

僕が参考にしている Ruby, Rails の情報源まとめ(海外ブログ編)

昨日 @bekkou68 さんに「前島さんってどうやってRubyやRails関連の情報を収集しているんですか?」って聞かれたのでまとめてみます。とりあえず海外のブログ限定で。日本ブログ編は気が向いたらやります…。 RailsCasts 有名すぎて説明不要かもしれませんね。…

Rails 4.0 に入る予定の turbolinks について調べた

Rails 4.0 のデフォルト Gemfile に入るらしい、pjax っぽいことをして画面遷移を高速化する gem turbolinks について軽く調べてみました。 Introducing Turbolinks: github.com/rails/turbolin…. This will ship as default-on in Rails 4.0 Gemfile. PRESS…

rails generate controller で無駄な helper や assets を生成しない方法

rails generate controller で controller を生成すると、必要の無い helper、 coffee、stylesheet ファイルが一緒に生成されるので後で消すのがめんどくさいですね。そんなときは下記のように –no-helper オプションや –no-assets オプションを付けることで…

Rails 4.0 は rake routes いらず

Rails 4.0 では、development 環境で http://example.com/rails/info/routes にアクセスすると、ルーティング情報が下記のように確認できるようになりました。4.0から rake routes でルーティングを確認する機会はかなり減りそうです。 これは sextant とい…

edge な rails の試しかた

Rails4.0 を試したいなーと思ったのですが、インストールの仕方を 以前やったことがある にもかかわらず忘れてました><。 cd ~/work/github/ git clone git://github.com/rails/rails.git ~/work/github/rails/bin/rails new yourapp --edge 上記のように…

ActiveRecord::QueryMethods#joins のメモ

Ruby on Rails Guides: Active Record Query Interface の joins の章を見てメモったので載せておきます。 11 Joining Tables joins メソッドについて。 11.1 Using a String SQL Fragment 単純に JOIN 節の生 SQL を引数として書ける Client.joins('LEFT OU…

Fabrication 2.0 アップグレードガイド

いつの間にか Fabrication がバージョン2になっていて、そこで非互換な変更がされたようです。バージョン1からの移行の仕方が書かれた Fabrication 2.0 Upgrade Guide - The Hashrocket Blog を意訳したので載せときます。 全ての末尾の”!”を削除 ”!” は dep…

ローカルgemのrdocみるなら gem server より yard server --gems

復習用エントリ。そもそもローカルのgemのrdoc見る機会も少なくなってるというのもあり完全に忘れてた。gem server よりも yard server --gems で出力する rdoc の方が見やすいですね。 参考 Route 477 - ローカルのgemのドキュメントを見る簡単な方法(2010…

sprockets の README 意訳

Rails3.1 から同梱されるようになった sprockets の README の意訳です。 sstephenson/sprockets - GitHub はじめに Sprockets は assets ファイルのコンパイルと配信を行うための Ruby のライブラリです。JavaScript と CSS ファイルの依存関係を宣言でき、…

capybara-webkitのインストールに失敗

JavaScript を使ったエンドツーエンドテストには capybara の selenium ドライバを使っています。JavaScript のテストが出来るのは大変便利なのですが、selenium を使うと firefox が立ち上がってガチャガチャとやるので遅いです。あとはテスト用のサーバを…

Powで一時的にproduction環境にする

Pow は development 用!という先入観があったけど、#{Rails.root}/.powenv に export RAILS_ENV=productionとかしておけば、Pow で production を試すことが出来ることに気づいた。

Rails Application Template を使ってみる

最近 rails new コマンドを使って rails アプリを生成することが多いです。作るたびに .gitignore に /vendor/bundle を追加するなどいつも同じ事をしていたので、テンプレートを使って共通化することにしました。ファイルをGistにアップして下記のように使…

capybara で確認ダイアログを含む js をテストする

capybara 経由で selenium を使ってテストする時に、確認ダイアログを含む js をテストする方法のまとめ。 昔のやり方 クリックする前に、confirm の内容を差し替える方法。 page.evaluate_script('window.confirm = function() { return true; }') page.cli…

capistrano で rails アプリをデプロイ

遅まきながら capistrano デビューをしようと思い立ちました。ググった感じでは断片的な情報しかひっかからなかったので、それらをまとめて全体的な情報を網羅した内容をブログに書こうと思ったのですが、Railsデプロイの capistrano の章がよくまとまってい…

scss-modeを導入

結構前のメモを発掘したので一応載せときます。Rails 3.1 から SCSS が標準になったので、scss-mode を導入してみました。antonj/scss-mode - GitHub自動で SCSS を CSS にコンパイルしてくれる機能がありますが、Rails 3.1 で使うだけなら自動コンパイル必…

production 環境で bundle install

テスト用、開発用の gem を除いて gem をインストールしたい場合、--without でいらないグループを指定するといい bundle install --without test development

Capybara の README 意訳

注意 この訳はだいぶ古い(2011年7月時のREADME)です。最新版の訳をgithub上に載せたのでこちらをご覧ください。 はじめに Rails のエンドツーエンドテスト用のデファクトスタンダードプラグイン Capybara の README 意訳です。いつもと比べて直訳成分多めで…

Rails 3.1 で ajax がうまくいかない時がある

下記のようなコードがうまく動かなかった。 link_to "削除", post, remote: true, method: :delete しばらく悩んだあと jquery_ujs.js を手動で最新に更新したらうまく動いた。ファイルの更新を自動でやってくれるといいんだけどなー・・・と思ったら Genera…

bundle exec を省略する

Railsアプリの開発に bundler を使うようになって、gem 関連でハマることは少なくなったような気がします。ただ、その代わりに、なにかコマンドを叩くときに bundle exec をつけ忘れてエラーになることが時々あって、そんな時に少々めんどくさく感じます。bu…

ラベルとサブミットボタンの文言をi18n対応にする

i18n用のファイルを下記のように設定してやると ja: helpers: submit: create: "登録する" update: "更新する" submit: "保存する" label: user: email: "メールアドレス" password: "パスワード"下記のようなフォームが日本語になります(I18n.locale = "ja"…

Object#presence

rails が追加しているメソッド。真ならオブジェクト自身を返して、偽なら nil を返す。 object.present? ? object : nil. と同じ。下記のような、パラメータをチェックして使うよくある感じのコードが state = params[:state] if params[:state].present? co…

Rails3 で HTTPS を使うには

Configuring Rails 3 to use HTTPS and SSL – Simone Carletti's Blogの意訳。 Rails 3.1以降 Rails3.1以降からは、このコミットによってHTTPからHTTPSへ遷移させるのがちょう簡単にできるようになった。下記のようにするだけでOK。 # config/application.rb…

capybara でサブドメインを利用したアプリのテストをするには

capybara のドライバによって設定の仕方は違うようですが、デフォルトの Rack::Test であれば Capybara.default_host = "en.example.com" のようにすることで、サブドメインへアクセスすることができるようになります。 参考 capybara with subdomains ― Gist

Rails 3.1 の migration の変更点について

またまたRails 3.1 ネタです。Rails 3.1 では migration ファイルのデフォルトフォーマットが変わりました。 rails g model blog title:string body:text としたとき、Rails 3.0 では下記のファイルが生成されます class CreateBlogs < ActiveRecord::Migrat…

Rails3.1で追加されるパスワード暗号化機能について

Rails 3.1 からパスワードの暗号化用のモジュールができたようです。ActiveModel::SecurePassword で定義されていて、ActiveRecord や Mondoid などの ActiveModel を利用しているモデルで使えるそうな。User モデルに password_digest カラムが設定されてい…

deviseでログイン後で遷移するパスを変更するには

deviseでログイン後に遷移するパスは、デフォルトだと {deviseで指定したmodel名}_root_path root_path の順番で探す。それ以外を指定したい場合は、ApplicationController で after_sign_in_path_for メソッ ドをオーバライドする。 例 class ApplicationCo…