rvmからrbenvへ移行
実装がコロコロ変わったりしてupdateしたら動かなくなったりするとか叩かれているrvmですが、実際僕も同じ現象に遭遇した事があり、rubyのバージョン管理をrbenvに移行することにしました。37signalsの中の人が作っているので、まあ普及するかなと。OSはLionです。
rvm削除。
$ rvm implode $ rm -rf ~/.rvm
$ brew install rbenv ruby-build
.bash_profileに以下を追加
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
よし、rubyをインストールだ・・・!と、思ったらエラー。
$ rbenv install 1.9.2-p290 ERROR: This package must be compiled with GCC, and we couldn't find a suitable `gcc' binary on your system. Please install GCC and try again. As of version 4.2, Xcode is LLVM-only and no longer includes GCC. You can install GCC with these binary packages on Mac OS X: https://github.com/kennethreitz/osx-gcc-installer/downloads BUILD FAILED
どうやらLionからgccを使わなくなった様子。指示通りgccをDL&installで問題なく入りました。
使い方はrbenv + ruby-buildのインストール方法 - 223 Softwareで基本的なコマンドがよくまとまっています。詳しく知りたかったらgithubを参照。
で、そのままRailsを立ち上げたらエラー発生。
NoMethodError (undefined method `clear_active_connections!' for ActiveRecord::Base:Class):
ちょっと焦って色々探したのですが、bundle installした時にrvmを使っていたのが原因かな?と思ってvendor/bundleをrm -rfした後にbundle installしたら無事起動しました。良かった。
Ruby on Railsの情報源まとめ
個人的にRails関連でよく見るサイトをまとめてみた。殆ど英語でしか書いてないサイトばっかりですね。
Ruby on Rails Guides - http://guides.rubyonrails.org/
公式サイトのRailsチュートリアル。初心者向けを前提にしているようですが、Railsでどう書いたっけ?と思ったらまず最初に見ます。
Ruby on Rails Documentation - http://api.rubyonrails.org/
RailsのRDocです。いつの間にか検索が使いやすくなってます。
RailsCasts - http://railscasts.com/
RailsのTipsサイト。動画で解説しているのが凄い。ここを見ているだけで今どんなライブラリが流行っているのか大体分かるのでチェックしてます。
ASCIIcasts - http://ja.asciicasts.com/
RailsCastsをテキストにしたサイト。全てでは無いけど和訳済みのエントリーがある。
Rails Best Practices - http://rails-bestpractices.com/
タイトルそのまんま。Railsのベストプライスなコードのサンプルを掲載しているサイト。rubygemsがあって、これを使うとこのサイトのコードを元にチェックしてくれます。C言語のlintみたいな感じですね。
The Ruby Toolbox Search - http://www.toolboxsearch.tk/
HerokuでRails3.1+sqlite3アプリをデプロイする!
GitのリポジトリをpushするだけでデプロイまでしてくれるHerokuでRialsアプリをデプロイしてみました!友人の居酒屋サイトを作成中なんですが、凄い便利ですねHeroku。以下はherokuを使う時のまとめ。ちなみにRails3.1でデプロイしたものの、実装はほぼ3.0.9のままで、DBはsqlite3です。
アカウント作成
以下のURLから新規登録する。
http://api.heroku.com/signup
事前準備
$ gem install heroku # heroku利用時に必要なgem $ heroku keys:add # username/passを保存しておく
Gemfile
このエントリーを書いている時点では、この問題がある為、以下のgemを入れておかないとpushできないですね。
group :production do gem 'therubyracer-heroku', '0.8.1.pre3' # you will need this too gem 'pg' end
Railsアプリ作成
$ rails new hoge $ git init $ git add . $ git commit -m 'first commit'
herokuにアプリを作成・デプロイ
$ heroku create # heroku上でアプリケーションを作成するコマンド # https://api.heroku.com/loginでherokuにログインし、アプリケーションの名前を変更する $ vi .git/config # リポジトリ名をブラウザで変更した名前に修正する [remote "heroku"] url = git@heroku.com:変更したアプリ名.git # これをやっておかないとリポジトリが見つからずにpushできなくなる $ git push heroku master # herokuにリポジトリをpushし、デプロイも実行 $ heroku open # ブラウザが起動し、サイトを表示する
その他よく使うコマンド
dbのmigrate
$ heroku rake db:migrate # heroku上でmigrate
dbのダウンロード
$ heroku db:pull sqlite://保存先のパス/保存したいファイル名 # 例 $ heroku db:pull sqlite://db/production.sqlite3
dbのアップロード
$ heroku db:push sqlite://パス/アップロードするファイル名 # 例 $ heroku db:push sqlite://db/production.sqlite3
このコマンド実行時にアプリ名を入力する必要があります。省略する為のオプションもあるのですが僕は使ってません。
参考
HerokuでDBのデータをダウンロードしたりアップロードしたり - アインシュタインの電話番号☎
とりあえず基本的なコマンドはこんな感じ。無料プランだとDBが5Mまでと少なすぎですが、簡単なアプリを作るには十分ですね。
Rails3レシピブック 190の技
- 作者: 高橋征義,松田明,諸橋恭介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/07/25
- メディア: 単行本
- 購入: 32人 クリック: 909回
- この商品を含むブログ (37件) を見る
買いました!前作は立ち読み程度にパラパラとしか見ていなかったので、逆引き系の本なんだろうなーと思って読んだらそんなことはなく、Rails未経験者でも順を追ってRailsを学べる作りになっていました。しかしレシピブックというだけあって、目次から調べれば逆引きもできる作りになっていて、どちらでも使える良書だと思います。
Railsは1.x系から使ってるんですが、ネットでの情報収集をメインにやってきた人にもお勧めですね。2.1ぐらいまではchangelogを確認して差分をメモ・・という作業をしたりしてたけど、流石に仕事が忙しいのとchangelog意外にも実は変更点があったりするのがrailsですから、最近差分を追わずにrails guideを見ていた僕には見落としてる新機能も発見できて良かったです。やっぱり書籍になってると情報がまとまっていていいですね。
Factory Girlの新しいシンタックスが素敵
キタコレ。
旧シンタックスがこれ。なんだか残念な感じですね。
Factory.sequence :email do |n| "email#{n}@example.com" end Factory.define :user do |factory| factory.name { "Ron Burgundy" } factory.email { Factory.next(:email) } end Factory.define :admin, :parent => :user do |factory| factory.admin { true } end Factory.define :dog do |factory| factory.name { "Baxter" } factory.association(:owner, :factory => :user) end
新シンタックスがこれ!素晴らしい!
FactoryGirl.define do sequence :email do |n| "email#{n}@example.com" end factory :user, :aliases => [:owner] do name "Ron Burgundy" email factory :admin do admin true end end factory :dog do name "Baxter" owner end end
素敵過ぎる。こりゃ今までblueprintとか使ってた人も流れてくるんじゃねと思った。
【追記】コメ欄でblueprintってCSSじゃない?というツッコミがありましたが、これは書式のことです。FGでもMachinistでも使えるんですが、CSSのフレームワークでも同名のものがありますね。紛らわしい。
rakeタスクでurl_helperを使うには
なんかrakeタスクでurl_helper使えねーなーと、思ってたんだけどモジュールをincludeしてからdefault_url_options[:host]にホスト名を設定してやれば動くことが分かった。
include Rails.application.routes.url_helpers default_url_options[:host] = "d.hatena.ne.jp"
あぶなく全部べた書きするところだった。
collection_selectに:selectedオプションが欲しいが、Rails3にも無いっぽい
やっと仕事でRails3を使い始めたので、collection_selectに:selectedオプションが動くようになってるかなーと思ったんだけど、ダメでした。なので今まで通りselectで以下のように書いいてます。
<% form_for @user do |f| %> <% f.select(:item_id, Item.all.collect { |i| [i.name, i.id] }, :html=>{ :selected => @item.id }) %> <% end %>
プルダウンリストで:selectedを指定するにはselectで書くしかないのだろうか。