在Rails控制台中自动定义变量

时间:2014-11-17 17:52:02

标签: ruby-on-rails pry

根据我正在处理的内容,我会在打开f = Foo.last时定期定义变量(例如rails console)。

有没有办法在我的开发环境中自动执行此操作?

为了它的价值,我使用撬。

我可以这样做,但会话将退出:

$ rails c <<EOF
heredoc> f = Foo.last
heredoc> EOF

3 个答案:

答案 0 :(得分:4)

作为Sergio对实例变量的建议的替代方法,您还可以在.pryrc中定义方法:

def f
  @_f ||= Foo.last
end

我不确定这有你想要的所有语义,但它对我有用。

答案 1 :(得分:3)

如果您对实例变量不满意,可以将其添加到~/.pryrc

@f = Foo.last

使用局部变量,这不会起作用,因为它们的范围是本地的(因此名称)。

我自己做的是拥有所有&#34;设置&#34;命令在单独的文本文件中。然后在新的rails控制台中,我只是粘贴它。

  • 我不必在每次重启控制台时重新键入相同的定义
  • 全局配置文件中没有污染
  • 具有漂亮短名称的局部变量(即没有@

答案 2 :(得分:0)

我反复考虑了一段时间以实现此目的,而我想出的最好的方法是至少在一行中设置多个变量。 (请记住,我不想使用实例变量,并且希望能够覆盖它们,因此方法将无法使用):

~/.pryrc中:

# f, b, u, s = setup
def setup
  f = Foo.last
  b = Foo.bar
  u = User.find(5)
  s = u.settings.email_settings
  [f, b, u, s]
end

以此类推。


我还发现了一篇涵盖抽象方法方法的帖子,如果您不需要覆盖它们的话:http://kevinkuchta.com/_site/2014/09/load-useful-data-in-rails-console/