RoR の commands/foo.rb の中でもっとも簡単そうなのは、command/console.rb だ。そこで、その本体を覗いてみた。
やっていることは、 1。コマンドラインオプションを読んで、options ハッシュの :sandbox と :irb に対応する値を設定する。 2.script/console を起動するときに同時に読み込むライブラリを、文字列 libs に設定する。 3.環境変数 RAILS_ENV の値を設定する。 4.options[:sandbox] が真なら、メッセージを表示する。 5.options[:irb] に設定されている irb を libs 文字列と --simple-prompt オプションで起動する。 つまり、script/console を起動すると、まず、config/boot.rb で Rails の初期設定がされて、次に、その環境下で irb が起動される。したがって、Rails のモジュールやクラスの挙動を irb で調べることができることになる。 RoR はパーツ単体の動作を確認するのが簡単にできるので、ロールプレイング・ゲームの感覚で少しずつ謎を解いていくことができる。もちろん全体像をきちんと把握するためには文書を読まないといけないだろうが、Rails 本体だけでも結構遊べる。 ~$ locate commands/console.rb /usr/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/commands/console.rb /usr/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/console.rb ~$ cat /usr/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/commands/console.rb irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb' require 'optparse' options = { :sandbox => false, :irb => irb } OptionParser.new do |opt| opt.banner = "Usage: console [environment] [options]" opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v } opt.on("--irb=[#{irb}]", 'Invoke a different irb.') { |v| options[:irb] = v } opt.parse!(ARGV) end libs = " -r irb/completion" libs << %( -r "#{RAILS_ROOT}/config/environment") libs << " -r console_app" libs << " -r console_sandbox" if options[:sandbox] libs << " -r console_with_helpers" ENV['RAILS_ENV'] = case ARGV.first when "p"; "production" when "d"; "development" when "t"; "test" else ARGV.first || ENV['RAILS_ENV'] || 'development' end if options[:sandbox] puts "Loading #{ENV['RAILS_ENV']} environment in sandbox (Rails #{Rails.version})" puts "Any modifications you make will be rolled back on exit" else puts "Loading #{ENV['RAILS_ENV']} environment (Rails #{Rails.version})" end exec "#{options[:irb]} #{libs} --simple-prompt"
by tnomura9
| 2008-10-30 07:39
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||