【问题标题】:RVM & Unicorn deployRVM & Unicorn 部署
【发布时间】:2011-09-09 10:23:16
【问题描述】:

我的 RVM 以 root 身份安装。 当我尝试启动独角兽套接字时,它会打印

user@9001-3:~$ /etc/init.d/unicorn start
Starting myapp app: /usr/bin/env: ruby: No such file or directory
unicorn.

但是如果我输入

user@9001-3:~$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

/usr/local/rvm/gems/ruby-1.9.2-p180/bin/unicorn 路径存在。

我的独角兽配置:https://gist.github.com/1010519

【问题讨论】:

    标签: ruby-on-rails-3 rvm unicorn


    【解决方案1】:

    /etc/init.d/unicorn 不知道在哪里可以找到 Ruby,因为它是通过 RVM 管理的。通常,您的.bashrc 或类似文件会被执行并设置环境;这不会发生在 init 脚本(或可能由 root 执行的任何其他内容)中。

    解决方案是使用包装器。例如,要创建一个名为 system_ruby 的二进制文件来加载 RVM 的 1.9.2p180 环境并然后执行ruby,请执行以下命令:

    rvm wrapper ruby-1.9.2-p180 system ruby
    

    有关更多信息和详细信息,请查看this answer of mine,它解决了类似问题。

    【讨论】:

    • 我执行了这个命令,没有任何改变。 /etc/init.d/unicorn start Starting DPP.cz.cc app: /usr/bin/env: ruby: No such file or directory unicorn.
    • 如果您构建一个名为system_ruby 的可执行文件,您需要更新您的/etc/init.d/unicorn 脚本以使用它而不是ruby
    • 只有 unicorn.rb 和 unicorn 二进制文件的路径。如何更改我的/etc/init.d/unicorn?在这里gist.github.com/1010519
    • 啊,这很有帮助。在那种情况下,可能是 Unicorn 本身找不到 Ruby。我会再次运行包装器命令,但对于 Unicorn (rvm wrapper ruby-1.9.2-p180 system unicorn),这将创建一个名为 system_unicorn 的可执行文件。将which system_unicorn 给出的路径用于初始化脚本中的DAEMON 行。这与我在this blog post 中解释的类似。
    【解决方案2】:

    符号链接也可以,

    which ruby<your version>
    ln-s /ruby/path/ruby<your version> /ruby/path/ruby
    

    【讨论】:

      【解决方案3】:

      类型: which ruby(显示 ruby​​ bin 路径)然后输入:ln -s (change_to_ruby_path) /usr/bin/env/ruby(为您的系统构建正确的访问权限)

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,这对我来说

        rvm --default use <version>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多