【问题标题】:Init some variables when opening rails console打开rails控制台时初始化一些变量
【发布时间】:2013-09-04 10:12:02
【问题描述】:

事情就是这样。在将方法插入我的应用程序之前,我经常使用控制台来测试我的方法(我猜这里没什么新东西)。

我觉得方便的是,有一个 console_seed.rb 文件,我会加载它,然后我的所有变量都可以使用了。

例如:console_seed.rb

me = User.find(77)
other_person = User.find(89)

所以我可以立即测试:

me.add_friend(other_person)

打开控制台时,无需一次又一次地编写.find() 行。

我找到了这篇文章:how can I run an initializer from the rails console?

load "#{Rails.root}/config/db/console_seed.rb"

这可以解决问题,但不幸的是,文件中创建的变量与控制台不共享相同的上下文...

rails magik 在这种情况下会再次发生吗? :)

【问题讨论】:

  • 我使用由普通 .pryrc 加载的特定于项目的 .pryrc 并在那里进行初始化 - 我认为特定于控制台的初始化不属于应用初始化程序。
  • 您是否尝试过在控制台中复制粘贴找到等的那些行,这比重新输入它们要快。您可以将复制粘贴扩展到两行之外。虽然这并不能解决您的问题...这只是一遍又一遍地编写它们的替代方法..
  • 我赞同@DaveNewton 的建议。这是一个灵感示例(不是我的):github.com/danielbayerlein/dotfiles/blob/master/.pryrc

标签: ruby-on-rails ruby-on-rails-3 rails-console


【解决方案1】:

感谢@dave-newton 的建议,我通过 .irbrc 找到了一个不错的解决方案

创建了一个~/.irbrc 文件:

// when rails constole is started, go find the console_seed.rb - project specific - file
require Dir.pwd + "/db/console_seed.rb"
puts 'Config init'

还有App_Root_Path/db/console.seed.rb文件:

Me = User.find(77)
Other_person = User.find(89)

诀窍是MeOther_person 必须是常量而不是变量,否则它们不会传递到控制台范围。但就我而言,拥有常量实际上是有意义的。否则,可以使用方法定义,但我还没有探索过这种可能性。

我唯一的沮丧仍然是我的团队成员需要创建自己的~/.irbrc 文件才能获得相同的行为,它不会自动包含在 git 范围内......有什么建议吗?不是每次初始化控制台都会加载脚本吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2017-09-05
    • 2015-01-27
    • 1970-01-01
    • 2018-03-27
    • 2016-03-07
    相关资源
    最近更新 更多