1

我使用 ROR 和 ActionCable 创建了简单的在线聊天。然后尝试将应用程序部署到heroku。

但是部署后我有一个奇怪的错误,应用程序无法运行。

Heroku 构建日志:

   .........
   Bundle completed (0.70s)
   Cleaning up the bundler cache.
   Could not detect rake tasks
   ensure you can run `$ bundle exec rake -P` against your app with no environment variables present
   and using the production group of your Gemfile.
   rake aborted!
   TypeError: nil is not a symbol
   /tmp/build_5cc20a589923a15d8ef20f9d30e7babf/kokosko-chat-c869529/vendor/bundle/ruby/2.0.0/bundler/gems/actioncable-98855fea634a/lib/action_cable.rb:29:in `module_function'
   /tmp/build_5cc20a589923a15d8ef20f9d30e7babf/kokosko-chat-c869529/vendor/bundle/ruby/2.0.0/bundler/gems/actioncable-98855fea634a/lib/action_cable.rb:29:in `<module:ActionCable>'
   /tmp/build_5cc20a589923a15d8ef20f9d30e7babf/kokosko-chat-c869529/vendor/bundle/ruby/2.0.0/bundler/gems/actioncable-98855fea634a/lib/action_cable.rb:22:in `<top (required)>'
   .........

来自 github 的 action_cable.rb:

  # Singleton instance of the server
  module_function def server       #line #29
    @server ||= ActionCable::Server::Base.new
  end

宝石文件

gem 'actioncable', github: 'rails/actioncable'

在本地机器上一切正常。有任何想法吗?

来源,如果有帮助:https ://github.com/kokosko/chat/

4

1 回答 1

1

这听起来像您正在运行 ruby​​ 2.0 或更低版本。Rails 5.0 需要 ruby​​ 2.2。

此错误消息的确切原因是在以前的 ruby​​ 版本中

def foo
end

返回 nil,而从 ruby​​ 2.1 开始,它将返回:foo. 您发布的代码依赖于此更改。

于 2015-09-24T10:57:10.377 回答