如何运行连接到扭矩箱环境的轨道控制台(在生产环境中)

时间:2013-11-27 15:31:56

标签: ruby-on-rails rvm jruby rails-console torquebox

我正在我本地计算机上的torquebox环境中试验rails部署,一切都很顺利。

我跟踪了他们started guide with RVM以及其他一些关于clusteringsessions replicationdistributed caching的建议。我也试过background jobs support

现在我的应用程序在本地两个节点集群上运行,并且所有内容都已就绪,我从一个端口切换到另一个端口,并且仍然具有相同的会话和相同的缓存数据。

现在的问题是,如何启动连接到扭矩盒环境的rails控制台?我试过

rails c production

在应用程序目录中,当控制台加载正常时,我无法从Web应用程序读取缓存值,Rails.cache.read(:any_key)总是返回nil。此外,我无法从此控制台调用可查看的方法。鉴于Search.foo是一种可以背景的方法,我遇到了这个例外:

NameError: missing class or uppercase package name (`org.torquebox.core.util.StringUtils')
    from org/jruby/javasupport/JavaUtilities.java:54:in `get_proxy_or_package_under_package'
    from file:/Users/fabio/.rvm/rubies/jruby-1.7.8/lib/jruby.jar!/jruby/java/java_package_module_template.rb:14:in `method_missing'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/torquebox-messaging-3.0.1-java/lib/torquebox/messaging/task.rb:33:in `queue_name'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/torquebox-messaging-3.0.1-java/lib/torquebox/messaging/backgroundable.rb:198:in `publish_message'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/torquebox-messaging-3.0.1-java/lib/torquebox/messaging/backgroundable.rb:158:in `__async_foo'
    from (irb):2:in `evaluate'
    from org/jruby/RubyKernel.java:1123:in `eval'
    from org/jruby/RubyKernel.java:1519:in `loop'
    from org/jruby/RubyKernel.java:1284:in `catch'
    from org/jruby/RubyKernel.java:1284:in `catch'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/railties-3.2.15/lib/rails/commands/console.rb:47:in `start'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/railties-3.2.15/lib/rails/commands/console.rb:8:in `start'
    from /Users/fabio/.rvm/gems/jruby-1.7.8/gems/railties-3.2.15/lib/rails/commands.rb:41:in `(root)'
    from org/jruby/RubyKernel.java:1084:in `require'
    from script/rails:6:in `(root)'

Search.fooSearch.background.foo

都会发生这种情况

我还尝试使用以下命令运行控制台

torquebox exec /full/path/to/app-knob.yml 'rails c production'
bundle exec torquebox exec /full/path/to/app-knob.yml 'rails c production'

有了他们我收到了错误

chmod: vendor/bundle/jruby/1.9/bin/*: No such file or directory

我错过了什么吗?

最后请注意,在我的/config/torquebox.rb文件中

TorqueBox.configure do

  environment do
    RAILS_ENV 'production'
    GEM_HOME "#{ENV['rvm_path']}/gems/jruby-1.7.8"
    GEM_PATH "#{ENV['rvm_path']}/gems/jruby-1.7.8:#{ENV['rvm_path']}/gems/jruby-1.7.8@global"
  end

  options_for Backgroundable, concurrency: 10
end

我尝试过使用和不使用GEM_* env变量

1 个答案:

答案 0 :(得分:3)

尝试https://github.com/torquebox/torquebox-console,但坦率地说,我开始后悔去Torquebox,有趣的并发症和其他不必要的箍跳在它的使用周围萌芽,tbconsole是一个有用的工具,但它有网络变种和检查出来 - 但是在生产中谨慎使用它,它会使开发扭矩箱实例开始表现得离奇(至少对我来说),这使得工作正在进行中#34;几个月后使用感觉。

另外,作为一种解决方法,您可以设置一个"开发"连接到生产主机上的生产数据库的环境,但是在与HornetQ等集成功能或依赖于此类功能的任何功能进行接口时应该会遇到问题,例如https://issues.jboss.org/browse/TORQUE-1175 - Torquebox团队似乎不是急于解决这些问题。