如何在每个Rails控制台调用之前运行脚本?

时间:2016-03-03 12:46:50

标签: ruby-on-rails ruby irb

每次我想打开Rails控制台时,我都厌倦了写这行:

irb(main):001:0> ActsAsTenant.current_tenant = User.find(1).account

有没有办法在每次“rails c”/“irb”调用之前运行命令/脚本?

提前致谢!

3 个答案:

答案 0 :(得分:2)

将要执行的代码放入项目根文件夹中的.irbrc文件中:

echo 'ActsAsTenant.current_tenant = User.find(1).account' >> .irbrc
bundle exec rails c # ⇐ the code in .irbrc got executed

Sidenote :使用Pry代替愚蠢的IRB。尝试一下,你永远不会回滚。

答案 1 :(得分:1)

您可以将设置代码放在rb文件中,例如:

foo.rb:

def irb_setup
    ActsAsTenant.current_tenant = User.find(1).account
end

像这样启动irb:

irb -r ./foo.rb 

并调用方法(将自动完成按下标签)

2.3.0 :001 > init_irb

实际上也许你可以直接放置代码而不需要任何方法,它会在加载时执行。但我不确定这是否会对加载顺序起作用或搞乱。

答案 2 :(得分:1)

我写了extended answer to this in another question,但简短的答案是,如果您是using Rails 3 or above,则可以在YourApp :: Application上使用控制台方法来实现它:

module YourApp
  class Application < Rails::Application
    ...

    console do
      ActsAsTenant.current_tenant = User.find(1).account
    end
  end
end