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

Jos*_*ber 5 ruby ruby-on-rails ruby-on-rails-5

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

期望的结果:

> rails console
Loading development environment (Rails 5.1.1)
pry(main)>
Welcome
Run Code Online (Sandbox Code Playgroud)

我尝试同时使用console钩子和initializer钩子但没有成功。例如

尝试1:

# config/application.rb

console do
  puts "Welcome"
end
Run Code Online (Sandbox Code Playgroud)

结果:

> rails console
Welcome # Too early                                                              
Loading development environment (Rails 5.1.1)
pry(main)>
Run Code Online (Sandbox Code Playgroud)

尝试2:

# config/application.rb

initializer "welcome", after: :disable_dependency_loading do |app|
  puts "Welcome"
end
Run Code Online (Sandbox Code Playgroud)

结果:

> rails console
Welcome # Too early                                                              
Loading development environment (Rails 5.1.1)
pry(main)>
Run Code Online (Sandbox Code Playgroud)

Ank*_*itG 5

与 IRB 一起使用时

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

#.irbrc
IRB.conf[:IRB_RC] = Proc.new do
  puts "Welcome"
end
Run Code Online (Sandbox Code Playgroud)

输出

~/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>
Run Code Online (Sandbox Code Playgroud)

与 PRY 一起使用时

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

#.pryrc
class WelcomeClass

  def self.greet
    puts "Welcome"
  end
end

Pry.config.exec_string = WelcomeClass.greet
Run Code Online (Sandbox Code Playgroud)

输出

 ~/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)>
Run Code Online (Sandbox Code Playgroud)