Rails上でActiveRecordを使うとconfig/database.ymlを読み取ってよしなにestablish_connetionをしてくれるけど、 そこら辺の処理を自分でやりたい場合にはRailtieのイニシャライザを上書きする必要がある。 ActiveRecord 3.2.3だと active_record/railtie.rb のなかに次のようなコードがある。 initializer "active_record.initialize_database" do |app| ActiveSupport.on_load(:active_record) do self.configurations = app.config.database_configuration establish_connection end end このactive_record.initialize
毎回Herokuを使ってみようと思うたびに手順を忘れるのでメモ。 アプリケーションの準備 hello_herokuというRailsアプリケーションを作ることにする。 Herokuの標準のDBがPostgreSQLなので今回もそれを指定する。 Test::UnitとPrototype.jsは要らないので-JTする。 $ rails -v #=> 3.0.9 $ rails new hello_heroku -JT -d postgresql $ cd hello_heroku いつもどおりgitリポジトリを作る $ git init $ git add . $ git commit -am "initial commit" 専用のRVM gemsetも作っておく。 $ rvm use 1.9.2@hello_heroku --create $ echo "rvm use 1.9.2@hell
とりあえず動かしてみたのでメモ。 unicornを動かす まずはgemをインストール。 $ gem install unicorn unicornの処理を設定する $ cd <RAILS_ROOT> $ vi config/unicorn.rb <RAILS_ROOT>/config/unicorn.rbはこんな感じ(nginx + unicorn を試してみたからほぼそのまま拝借): # ワーカーの数 worker_processes 2 # ソケット経由で通信する listen File.expand_path('tmp/sockets/unicorn.sock', ENV['RAILS_ROOT']) # ログ stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) stdout_path File.exp
fields_for、accepts_nested_attributes_forを使って、has_manyな関連先をまとめてINSERTする方法。ソースはgithubに上げておいた。ちなみにRails 3.0.8。 Post has_many Tags through Taggingsというモデルがあったとする。 とりあえずscaffoldはこんな感じ。Taggingだけは画面が要らないのでmodelだけ。 $ rails g scaffold posts title:string text:text $ rails g scaffold tags name:string $ rails g model tagging post:references tag:references $ rake db:migrate コードの修正で重要なのは次の2点。 app/models/post.rb
以前書いたモジュールの特異メソッドをincludeして使うと同じことが、ActiveSupport::Concernを使うことでもうちょっと綺麗に書ける。 module A extend ActiveSupport::Concern included do # Aがincludeされた際に、includeしたクラスのコンテキストで実行される end module InstanceMethods def instance_method_of_a p "instance_method_of_a" end end module ClassMethods def class_method_of_a p "class_method_of_a" end end end class B include A end こんなモジュールをとあるクラスBでincludeすることで、 InstansMethods
Rails3でRSpec2とmachinist2を使うための下準備。 $ alias r=rails $ r new testapp -T -d mysql $ cd testapp $ vi config/application.rb # Test::Unitにさよなら $ vi Gemfile # RSpec2とmachinist2を追加 $ bundle install $ r g rspec:install $ r g machinist:install $ vi config/application.rb # fixtureの代わりにblueprintを追加するように $ vi ~/.autotest # DBを毎回クリアする 各種ファイルの編集は下記の通り。 Test::Unitにさよなら -require 'rails/all' +require "active_record
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く