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)
与 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)
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |