如何在启动Rails控制台时自动运行代码?

时间:2015-04-16 21:54:00

标签: ruby-on-rails ruby ruby-on-rails-4 rails-console ruby-on-rails-4.2

假设每次Rails控制台出现时我都想要问候语:

Scotts-MBP-4:ucode scott$ rails c
Loading development environment (Rails 4.2.1)
Hello there! I'm a custom greeting
2.1.5 :001 >

我会在哪里放puts 'Hello there! I\'m a custom greeting'声明?

另一个Stackoverflow回答建议,我也在其他地方读过这个,我可以把它放在这样的初始化器中:

# config/initializers/console_greeting.rb
if defined?(Rails::Console)
  puts 'Hello there! I\'m a custom greeting'
end

这对我不起作用:(。即使没有if defined?(Rails::Console)我仍然没有得到输出。看起来像我进入控制台时初始化器没有运行,尽管其他人建议。

2 个答案:

答案 0 :(得分:4)

我使用〜/ .irbrc用于类似目的(我在每个控制台会话中都需要一个gem)。例如,我的.irbrc

if (defined? Rails)
  # Rails specific
end

# common for all irb sessions

您可以使用项目名称将执行代码限制为仅一个项目的控制台:

if (defined? Rails) && (defined? YourProject)
  # code goes here
end

答案 1 :(得分:0)

以下内容适用于 Rails 6

只需将一个块传递给 Edit: i have also tried postData in the intercept ,例如

Rails.application.console

现在在启动 rails 生产控制台时,将打印自定义消息。这段代码不会在你启动 rails server 的时候执行。

如果您希望它在所有环境中运行,请删除 # config/initializers/custom_console_message.rb if Rails.env.production? Rails.application.console do puts "Custom message here" end end