rails

capistrano3でshared_pathにディレクトリを作成する

いつも忘れるので、メモっておく。 namespace :tmp_dir do task :create do on roles(:all) do within shared_path do unless test "[ -e tmp/subdir]" execute :mkdir, "-p", "tmp/subdir" end end end end end after "deploy:check", "tmp_dir:create"

Rails Good Parts

Railsにまつわる便利機能・デザインパターンはたくさんありすぎて、正直覚えきれないので、 個人的に役立ったものまとめていこうと思います。 ActiveModel validation バリデーションを特定のコンテキストでのみ実行する方法。 ActiveModel::Validations cla…

Action Mailerでfromフィールドに差出人名を表示したい

よく見かけるAction Mailer のサンプルはこんな感じだと思います。 mail from: 'noreply@example.com', to: 'foobar@example.com', subject: 'Hi' このケースでは差出人は noreply@example.com となるんですが、時にサービス名などを設定したくなることもあ…

ActiveRecord の with_options に関する注意書き

with_options (Object) - APIdock にて、ActiveRecord の with_options について注意書きが書かれていたのでメモ。 和訳はちょっと雑です。 with_options はネストすることができ、receiver に引き継がれます。 メモ: ネスト階層は継承したデフォルトオプシ…

deploy:assets:backup_manifest が失敗する

Rails を 4.2.0 から 4.2.4 にアップグレードしようと capistrano でデプロイしたらエラーが発生した。 INFO [e43c382f] Running /usr/bin/env cp /home/myapp/myapp/releases/20150916085015/public/assets/manifest* /home/myapp/myapp/releases/201509160…

Rails で発生した Error を NewRelicに通知する

Rails アプリでは newrelic_rpm を Gemfile に書いておけば、よしなにエラーを NewRelic のダッシュボードに通知してくれます。 が、 rescue_from Exception, with: :render_500 def render_500(e = nil) logger.error e render file: 'public/500', status:…

sitemap_generator + whenever + S3 で サイトマップを配信する

Rails - sitemap_generator + whenever + S3 で サイトマップを配信する - Qiitaqiita.com

ActiveRecordのestablish_connectionを読む

ActiveRecord における DB との接続確立方法をきちんと理解できてなかったので、pry-byebug を使いながらコードを読み解いてみる。 Railsのversion は 4.2.0 という前提で。 establish_connection [Ruby] 例えば、ActiveRecord の connection_pool を止める …

Active Record のvalidation と error message 対応表

とりあえず memo。 対応表 Rails Internationalization (I18n) API — Ruby on Rails Guides

railsのルーティングエラーを捕捉する

特に何も設定せずとも routes.rb にマッチしなかったリクエストは rails がエラーにしてくれますが、ログに書き出す等の特別な処理を差し込みたい時にはルーティングエラーを捕捉する必要があります。 少々苦戦したので、忘れないようにメモしておきます。 …

memo: Railsで、とあるRSSを生成した際のbuilder

「:」付き要素を生成したり、キャッシュを使ったり、アレコレ調べて苦労したので、自分用メモとして残しておく。 # feed.rss.builder xml.instruct! xml.rss version: "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title…

utf8_unicode_ci から utf8_general_ci に一括ALTERする

だいぶ前ですが、Rails の config/database.yml で collation を指定し忘れて、全てのテーブルが utf8_unicode_ci になってしまいアタマを抱えるという事件がありました。 なぜこれで困るのかについては、 Rails - ActiveRecordでデフォルトの照合順序を変更…

Railsのautoload_paths

autoload_paths について、きちんと調べてみました。 とは言うものの、Autoloading and Reloading Constants — Ruby on Rails Guides にほぼ知りたいことは書かれていたので、重要なポイントを抜粋しておきます。訳は適当です。 autoload_paths の デフォル…

Rails 悲観ロック

Memo. ActiveRecord::Locking::Pessimistic

daemontools + start_server + unicornでhot deploy

「Server::Starterに対応するとはどういうことか」の補足 : sonots:blog daemontools + start_server + unicorn でのハマりどころと対策がまとまってて、とても助かった。 sonot++

submit_tag

memo. submit_tag(value = "Save changes", options = {}) confirm と disable_with は 3.2.3 までは options に定義していたが、3.2.5からは data属性に定義が必要になった模様。。 submit_tag (ActionView::Helpers::FormTagHelper) - APIdock

Bundler.setupとrequire

Bundlerの仕組みを十分に理解しているとは言い難かったので、深堀りしてみたい。 Bundler.setup http://bundler.io/bundler_setup.html Configure the load path so all dependencies in your Gemfile can be required まず最初にやるべきは依存関係にある全…

Rails4で廃止になった findメソッド群

オレオレメモ。 正式には Dynamic finder methods と呼ぶらしい。 Rails3 から Rails4 にアップグレードすると NoMethodError: undefined method `find_or_initialize_by_*****' というエラーが出ることがある。 こういう時は Ruby on Rails 4.0 Release Not…

Mac OS X でのrbenvによるruby環境構築

「初心者なんで、rbenvで構築した環境にgemをそのままinstallでいいよねー」と思ってたけど、gemのversion違いとかで、そのうち涙目になりそうな気がしてきたので、真っ当な方法を模索してみました。 いくつ記事を漁ったところ、bundlerを使うのはもはや当然…