【问题标题】:Cannot run Unicorn with Ruby 2.0无法使用 Ruby 2.0 运行 Unicorn
【发布时间】:2013-08-12 17:55:06
【问题描述】:

在我的 ubuntu 机器上,我可以在 ruby​​ 1.9.3 上运行 unicorn,但是,它似乎不适用于 ruby​​ 2.0。知道为什么吗?

root@dev:/home/karan# rvm use 1.9
Using /usr/local/rvm/gems/ruby-1.9.3-p429
root@dev:/home/karan# unicorn -v
unicorn v4.6.3
root@dev:/home/karan# rvm use 2.0
Using /usr/local/rvm/gems/ruby-2.0.0-p195
root@dev:/home/karan# unicorn -v
/usr/local/rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- unicorn/launcher (LoadError)
        from /usr/local/rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
        from /usr/bin/unicorn:3:in `<main>'

【问题讨论】:

  • 你在切换 ruby​​ 版本后有bundle install 吗?
  • 我不在 Rails 文件夹中...
  • 我认为问题在于独角兽安装在 1.9.3 中,当您尝试将其与 2.0.0 一起使用时,它会中断。您必须在 2.0.0 中重新安装 gem 才能与 2.0.0 一起使用。
  • 好的,马上试试。我觉得你是对的......
  • 你就是!将其添加为答案,我很乐意将其标记为已接受!谢谢! :)

标签: ruby-on-rails ruby unicorn ruby-2.0


【解决方案1】:

尝试使用 2.0.0 重新安装 gem。

问题一定是由于 gem 是在 1.9.3 中安装的。

【讨论】:

    【解决方案2】:

    我在尝试启动 Unicorn 服务器时遇到了完全相同的问题

    Starting Unicorn web server unicorn
    /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- unicorn/launcher (LoadError)
    from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/bin/unicorn:3:in `<main>'
    

    不过,当我从 rails app 文件夹运行 Unicorn 时,它运行良好,只需使用“unicorn”命令即可。

    我已经尝试了你的建议,安装 gem unicorn

    gem install 'unicorn'
    

    但它不会改变结果

    我检查安装了什么gem:

    which gem 'unicorn'
    /usr/local/rvm/rubies/ruby-2.0.0-p353/bin/gem
    /usr/local/rvm/gems/ruby-2.0.0-p353/bin/unicorn
    

    我正在从 etc/init.d 脚本运行 unicorn,您可以在此处看到:

    http://pastebin.com/qvwdmRJ2

    这里是默认配置:

    http://pastebin.com/84FBQjMp

    默认配置文件的PATH好像有问题:

    PATH=/usr/local/rvm/rubies/ruby-2.0.0-p353/bin:/home/unicorn/.rvm/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:$
    

    因为我使用新安装的版本对其进行了更新,所以我收到了顶部显示的错误消息。如果我删除它,Unicorn“显然会启动”,但日志显示一个疯狂的活动,而 nginx 显示一个空白屏幕。

    我正在努力寻找解决方案,一旦找到就会在这里分享。

    感谢您的帮助

    * 更新 *

    好的,我发现了问题:

    1) 对于 /etc/init.d 脚本:

    您需要为 Unicorn 创建一个包装器以在 init.d 类型的脚本中工作:

    rvm 包装器 2.0.0 ruby​​-2.0.0 独角兽

    然后换行

    DAEMON=/usr/bin/独角兽

    用这个:

    DAEMON=/usr/local/rvm/bin/ruby-2.0.0_unicorn

    现在是命令

    服务独角兽启动

    更多关于 rvm 包装器的信息:https://rvm.io/integration/init-d

    2) 我还有一个在日志中难以识别的问题:

    我没有创建 config/environments/staging.rb 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多