Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails控制台中自动定义变量_Ruby On Rails_Pry - Fatal编程技术网

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

Ruby on rails 在Rails控制台中自动定义变量,ruby-on-rails,pry,Ruby On Rails,Pry,根据我的工作内容,我通常会在打开rails控制台时定义变量,例如f=Foo.last 有没有办法在我的开发环境中自动完成这项工作 无论如何,我用的是pry 我可以这样做,但会话将退出: $ rails c <<EOF heredoc> f = Foo.last heredoc> EOF 如果您对实例变量没有问题,可以将它们添加到~/.pryrc 对于局部变量,这将不起作用,因为它们是其作用域的局部变量,因此得名 我自己做的是将所有的设置命令放在一个单独的文本文件中。然后

根据我的工作内容,我通常会在打开rails控制台时定义变量,例如f=Foo.last

有没有办法在我的开发环境中自动完成这项工作

无论如何,我用的是pry

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

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

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

对于局部变量,这将不起作用,因为它们是其作用域的局部变量,因此得名

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

我不必在每次重新启动控制台时重新键入相同的定义 全局配置文件中没有污染 具有很好的短名称的局部变量,也就是说,没有@
如果您对实例变量没有问题,可以将它们添加到~/.pryrc

对于局部变量,这将不起作用,因为它们是其作用域的局部变量,因此得名

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

我不必在每次重新启动控制台时重新键入相同的定义 全局配置文件中没有污染 具有很好的短名称的局部变量,也就是说,没有@
除了Sergio建议的实例变量之外,您还可以在.pryrc中定义方法:


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

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


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

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

在~/.pryrc中:

等等


我还发现了一篇关于方法抽象的帖子,如果你不需要重写它们的话:

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

在~/.pryrc中:

等等


我还发现了一篇关于抽象方法的文章,如果你不需要重写它们的话:

Nice,这可能已经足够接近了。我要做的一个修改是,pry在我的Rails存储库中拾取.pryrc,这对我来说比~/.pryrc更可取。谢谢。非常好,只是c=Codebase.last在.pryrc中工作。@ErikNomitch:Hm,你有什么版本的pry?我的不拾取local.pryrc,也不从全局变量导出局部变量。很好,这可能已经足够接近了。我要做的一个修改是,pry在我的Rails存储库中拾取.pryrc,这对我来说比~/.pryrc更可取。谢谢。非常好,只是c=Codebase.last在.pryrc中工作。@ErikNomitch:Hm,你有什么版本的pry?我的不拾取local.pryrc,也不从全局导出局部变量。谢谢,-exec将是完美的,但由于我需要通过rails控制台启动pry,我不确定如何传递它。我使用的是pry rails Gem。实际上我是说你可以定义实例变量,因为局部变量不起作用你说得对,塞尔吉奥图兰采夫。我已经更新了我的答案。@ErikNomitch对此表示抱歉。我已经深入研究了pry rails,但不幸的是没有看到一个与-exec相当的现成版本。谢谢,-exec将是完美的,但由于我需要通过rails控制台启动pry,我不确定如何通过它。我使用的是pry rails Gem。实际上我是说你可以定义实例变量,因为局部变量不起作用你说得对,塞尔吉奥图兰采夫。我已经更新了我的答案。@ErikNomitch对此表示抱歉。我已经深入研究了pry rails,但不幸的是,我没有看到与-exec等价的现成版本。
@f = Foo.last
def f
  @_f ||= Foo.last
end
# 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