【发布时间】:2013-12-06 13:59:33
【问题描述】:
我有一个应用程序,我让它在本地运行。我可以在rails console 中创建另一个版本的应用程序,但是我希望有一个正在运行的应用程序的命令行界面,我可以在 Web 界面和控制台中与之交互。
理想情况下,我启动rails s,然后可以在该环境中使用变量。
【问题讨论】:
标签: ruby-on-rails irb rails-console
我有一个应用程序,我让它在本地运行。我可以在rails console 中创建另一个版本的应用程序,但是我希望有一个正在运行的应用程序的命令行界面,我可以在 Web 界面和控制台中与之交互。
理想情况下,我启动rails s,然后可以在该环境中使用变量。
【问题讨论】:
标签: ruby-on-rails irb rails-console
你不能用 vanilla Rails 做到这一点。每次您输入rails(无论是server 还是console),您都在启动应用程序的一个全新实例,该实例与任何其他实例都不共享任何状态。
但是,如果您安装了非常有用的 Pry gem,您可以在应用程序的任何位置(在动作、模型或视图中)键入 binding.pry。当程序流到达您的binding.pry 时,server 实例将进入交互式 shell,您可以检查服务器进程的状态。这几乎是您可以达到的目标。
【讨论】:
pry 会话之前,您的服务器将被阻止。您的浏览器将挂起,直到最终超时。要停止您的互动 prying,请点击 ctrl-d。
pry!!!正是我正在寻找的东西,显然我可以用它探索很多东西。会认为这样的东西会出现在香草导轨中!
如果我没看错你的问题,这很常见。
您可以让rails s 在您的应用目录中的一个终端窗口中运行,然后让rails c 在同一应用目录中的另一个终端窗口中运行。
然后您可以修改数据库中的对象,这些对象将在 Web UI 中可见。
【讨论】:
application 模型是通过UI 创建的,但是当我调用application 或@application 时,它在控制台中不存在。
User 并将其存储为@user,您可以通过User.last 在控制台中找到该用户。
pry 很棒 - 强烈推荐。我的回答将允许您弄乱数据,然后让该数据显示在网站上后续加载的页面上。
回应“我爱pry!!!” - 您通常会问如何“调试”您的应用程序。因此,如果您安装了 RubyMine(以及一些 gem,例如 debug_inspector、debugger、debugger-linecache、debugger-ruby_core_source、pry-debugger 和 ruby-debug-ide),那么您可以从 RubyMine 的调试配置中运行 rails server。
从那里,您可以将断点放置在您本来可以窥探的位置。您可以在 RubyMine 中运行语句,看看发生了什么。 RubyMine 为重构和自动化测试提供了一个很棒的平台。无从属关系;只是为问题提供更多答案。
【讨论】: