【发布时间】:2014-11-17 17:52:01
【问题描述】:
根据我的工作,我会在打开 rails console 时定期定义变量(例如,f = Foo.last)。
有没有办法在我的开发环境中自动执行此操作?
为了它的价值,我正在使用 pry。
我可以这样做,但会话将退出:
$ rails c <<EOF
heredoc> f = Foo.last
heredoc> EOF
【问题讨论】:
标签: ruby-on-rails pry
根据我的工作,我会在打开 rails console 时定期定义变量(例如,f = Foo.last)。
有没有办法在我的开发环境中自动执行此操作?
为了它的价值,我正在使用 pry。
我可以这样做,但会话将退出:
$ rails c <<EOF
heredoc> f = Foo.last
heredoc> EOF
【问题讨论】:
标签: ruby-on-rails pry
作为 Sergio 建议的实例变量的替代方案,您还可以在.pryrc 中定义方法:
def f
@_f ||= Foo.last
end
我不确定这是否具有您想要的所有语义,但它对我有用。
【讨论】:
--exec 会很完美,但因为我需要通过rails console 启动 pry,所以我不知道如何通过它。我正在使用pry-rails Gem。
--exec 等效的现成版本。
如果你对实例变量没问题,你可以将它们添加到~/.pryrc
@f = Foo.last
对于局部变量,这是行不通的,因为它们在其范围内是本地的(因此得名)。
我自己做的是将所有“设置”命令放在一个单独的文本文件中。然后在新的 rails 控制台中,我只是粘贴它。
@)【讨论】:
.pryrc,这对我来说比 ~/.pryrc 更可取。谢谢。
c = Codebase.last 在.pryrc 中工作。
.pryrc,也不会从全局变量中导出局部变量。
我花了一段时间寻找一种方法来做到这一点,我想出的最好的方法是至少在一行中设置多个变量。 (请记住,我不想使用实例变量,并且我希望能够覆盖它们,因此方法不起作用):
在~/.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/
【讨论】: