【问题标题】:Automatically defining a variable in Rails console在 Rails 控制台中自动定义变量
【发布时间】: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


    【解决方案1】:

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

    def f
      @_f ||= Foo.last
    end
    

    我不确定这是否具有您想要的所有语义,但它对我有用。

    【讨论】:

    • 谢谢,--exec 会很完美,但因为我需要通过rails console 启动 pry,所以我不知道如何通过它。我正在使用pry-rails Gem。
    • 其实我是说你可以定义实例变量,因为局部变量不起作用。 :)
    • 没错,@SergioTulentsev。我已经更新了我的答案。
    • @ErikNomitch 对此感到抱歉。不幸的是,我对 pry-rails 进行了一些研究,但没有看到与 --exec 等效的现成版本。
    【解决方案2】:

    如果你对实例变量没问题,你可以将它们添加到~/.pryrc

    @f = Foo.last
    

    对于局部变量,这是行不通的,因为它们在其范围内是本地的(因此得名)。

    我自己做的是将所有“设置”命令放在一个单独的文本文件中。然后在新的 rails 控制台中,我只是粘贴它。

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

    【讨论】:

    • 很好,这可能已经足够接近了。我要做的一项修改是 pry 在我的 Rails 存储库中选择 .pryrc,这对我来说比 ~/.pryrc 更可取。谢谢。
    • 很好,c = Codebase.last.pryrc 中工作。
    • @ErikNomitch:嗯,你有什么版本的 pry?我的不会选择本地.pryrc,也不会从全局变量中导出局部变量。
    【解决方案3】:

    我花了一段时间寻找一种方法来做到这一点,我想出的最好的方法是至少在一行中设置多个变量。 (请记住,我不想使用实例变量,并且我希望能够覆盖它们,因此方法不起作用):

    ~/.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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 2020-05-07
      • 2014-05-11
      • 2011-11-25
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多