Rails源码阅读(一)_script/console
Rails源码阅读_script/console启动
rails中常用的命令script/console,一般来启动rails环境,在这里测试些脚本和函数等。问题:#1 启动到底做了什么,如何做到的#2 console怎么用,能做什么,不能做什么
我其实最关心的是,这个命令如何启动了rails环境,这样我们就可以使用rails的很多组件了,例如active_record。如果不熟悉这个的话,我们就还是生活在“黑盒”之中,深感憋屈。
详细分析script/console.rb脚本内容:
整个代码,最重要的地方就2处:#(1)处是拼接irb使用的字符串libs,libs这个名字虽然是正确的,但感觉不贴切。。。#(2)处是执行这个字符串最终,如果什么参数也不是用的话,libs字符串是这样的:稍微改写一点点代码:puts "="*50puts libsputs "="*50执行并输出:lijg@lijg-desktop:~/workruby/practice-2.3.5$ ruby script/console?Loading development environment (Rails 2.3.5)==================================================?-r irb/completion -r "/home/lijg/workruby/practice-2.3.5/config/environment" -r console_app -r console_with_helpers==================================================?可以看出:加载了几个文件:irb/completion,代码提示不全的config/environment,这个最重要,加载了rails的环境,下面讨论console_app,下面讨论console_with_helpers,下面讨论
config/environment文件的作用:代码:?console_with_helpers代码很短:ApplicationController.helpers的代码:ActiveRecord::Base.connection.increment_open_transactionsActiveRecord::Base.connection.begin_db_transactionat_exit do ActiveRecord::Base.connection.rollback_db_transaction ActiveRecord::Base.connection.decrement_open_transactionsend代码即文档!
==>>总结:?#1?加载了rails的配置和组建boot装载了rails的load path,console加载了rails的配置和组建,另外,为了方便,加载了几个重要的辅助文件:这样:就可以直接使用active_record, active_resource, active_support了尤其是active_support带来了很多好用的方法,在irb里不能使用,console里可以使用了。#2 console_app提供了方法:reload!,#reloads the environmentapp,返回一个session,sess.host! "www.example.com"new_session,返回一个session,host没有设置#3 console_with_helpers提供了方法:helper,返回View实例@helper,可以使用helper方法@controller,ApplicationController.new,用来使用ApplicationController的资源
+++||+++