【问题标题】:Explore Running Rails Server Environment from Console探索从控制台运行 Rails 服务器环境
【发布时间】:2013-12-06 13:59:33
【问题描述】:

我有一个应用程序,我让它在本地运行。我可以在rails console 中创建另一个版本的应用程序,但是我希望有一个正在运行的应用程序的命令行界面,我可以在 Web 界面和控制台中与之交互。

理想情况下,我启动rails s,然后可以在该环境中使用变量。

【问题讨论】:

    标签: ruby-on-rails irb rails-console


    【解决方案1】:

    你不能用 vanilla Rails 做到这一点。每次您输入rails(无论是server 还是console),您都在启动应用程序的一个全新实例,该实例与任何其他实例都不共享任何状态。

    但是,如果您安装了非常有用的 Pry gem,您可以在应用程序的任何位置(在动作、模型或视图中)键入 binding.pry。当程序流到达您的binding.pry 时,server 实例将进入交互式 shell,您可以检查服务器进程的状态。这几乎是您可以达到的目标。

    【讨论】:

    • @meager - 我欠你一票。给我两个小时,你会得到我的 1-up。 :)
    • 是的,这似乎就是我要找的东西!谢谢
    • @ElijahMurray 请记住,在您停止 pry 会话之前,您的服务器将被阻止。您的浏览器将挂起,直到最终超时。要停止您的互动 prying,请点击 ctrl-d
    • 我爱pry!!!正是我正在寻找的东西,显然我可以用它探索很多东西。会认为这样的东西会出现在香草导轨中!
    【解决方案2】:

    如果我没看错你的问题,这很常见。

    您可以让rails s 在您的应用目录中的一个终端窗口中运行,然后让rails c 在同一应用目录中的另一个终端窗口中运行。

    然后您可以修改数据库中的对象,这些对象将在 Web UI 中可见。

    【讨论】:

    • 我认为这就是它的工作原理——也许我做的不对?我启动服务器,然后启动控制台,但如果我检查我的对象是否存在于控制台中(通过 Web UI 创建的对象),它们不存在。即application 模型是通过UI 创建的,但是当我调用application@application 时,它在控制台中不存在。
    • @Elijah 不,正如您在问题中所说,控制台和服务器是您的应用程序的两个完全独立的实例。
    • 对 - 所有变量都是 UI 的本地变量,更具体地说,是 UI 中的动作线程。例如,如果您在应用程序中创建一个User 并将其存储为@user,您可以通过User.last 在控制台中找到该用户。
    • 查看@meagar 的回答 - 这将允许您在中途停止应用程序并检查变量。 pry 很棒 - 强烈推荐。我的回答将允许您弄乱数据,然后让该数据显示在网站上后续加载的页面上。
    【解决方案3】:

    回应“我爱pry!!!” - 您通常会问如何“调试”您的应用程序。因此,如果您安装了 RubyMine(以及一些 gem,例如 debug_inspector、debugger、debugger-linecache、debugger-ruby_core_source、pry-debugger 和 ruby​​-debug-ide),那么您可以从 RubyMine 的调试配置中运行 rails server

    从那里,您可以将断点放置在您本来可以窥探的位置。您可以在 RubyMine 中运行语句,看看发生了什么。 RubyMine 为重构和自动化测试提供了一个很棒的平台。无从属关系;只是为问题提供更多答案。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 2023-03-22
      • 2014-10-31
      • 1970-01-01
      • 2013-06-29
      • 2012-06-03
      • 2013-04-19
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多