如何在Rails控制台加载后执行代码?

时间:2017-10-16 23:22:43

标签: ruby-on-rails ruby ruby-on-rails-5

在Rails中加载控制台 之后,如何专门运行代码 ?所有其他答案和问题似乎都围绕着某些点运行一个钩子,但不一定是 之后 ,因为我正在寻找。

期望的结果:

> rails console
Loading development environment (Rails 5.1.1)
pry(main)>
Welcome

我试图同时使用console挂钩和initializer挂钩但没有成功。 e.g。

尝试1:

# config/application.rb

console do
  puts "Welcome"
end

结果:

> rails console
Welcome # Too early                                                              
Loading development environment (Rails 5.1.1)
pry(main)>

尝试2:

# config/application.rb

initializer "welcome", after: :disable_dependency_loading do |app|
  puts "Welcome"
end

结果:

> rails console
Welcome # Too early                                                              
Loading development environment (Rails 5.1.1)
pry(main)>

3 个答案:

答案 0 :(得分:2)

  

使用IRB时

创建一个。 irbrc 文件(它应该是您项目的根目录),您应该为IRB_RC设置conf。以下是文件

#.irbrc
IRB.conf[:IRB_RC] = Proc.new do
  puts "Welcome"
end

<强>输出

~/D/p/p/s/console_test> rc
Running via Spring preloader in process 60648
Loading development environment (Rails 5.1.4)
Welcome #<======= Desired Result
irb(main):001:0>
  

使用PRY时

创建一个 .pryrc 文件(它应该是您项目的根目录),您应该为exec_string设置conf。以下是文件

#.pryrc
class WelcomeClass

  def self.greet
    puts "Welcome"
  end
end

Pry.config.exec_string = WelcomeClass.greet

<强>输出

 ~/D/p/p/s/console_test> rails console
Running via Spring preloader in process 61794
Loading development environment (Rails 5.1.4)
Welcome #<======= Desired Result
[1] pry(main)>

答案 1 :(得分:1)

在根目录中创建“.irbrc”。这只是一个常规的Ruby脚本文件,您可以在IRB启动时运行代码。有关示例,请参阅Tweaking IRB

答案 2 :(得分:0)

你可以像这样创建一个配置/初始化器:

# config/initializers/001_test_console.rb
module Rails::ConsoleMethods
  def self.included(base)
    puts "Welcome!"
  end
end

注意:我没有尝试使用pry,只是标准的irb。