我正在尝试将Mac OSX系统设置为服务器,并希望我的rails应用程序在启动时启动,包括所有相关的应用程序。我设法让乘客/ nginx和redis开始,但是在启动sidekiq时遇到了麻烦。
更具体地说,我想在启动bundle exec sidekiq -q carrierwave -e production -P /path/to/pid_file
运行此命令。
我尝试创建以下plist文件并将其添加到/ System / Library / LaunchDaemons /。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>my.sidekiq</string>
<key>ProgramArguments</key>
<array>
<string>/Users/username/.rvm/gems/ruby-1.9.3-p194@global/bin/bundle</string>
<string>exec</string>
<string>sidekiq</string>
<string>-q</string>
<string>carrierwave</string>
<string>-e</string>
<string>production</string>
<string>-P</string>
<string>/path/to/sidekiq.pid</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>RAILS_ENV</key>
<string>production</string>
</dict>
<key>WorkingDirectory</key>
<string>/path/to/rails/project</string>
<key>StandardOutPath</key>
<string>/path/to/log/sidekiq.log</string>
<key>StandardErrorPath</key>
<string>/path/to/log/sidekiq_err.log</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我运行sudo launchctl load /System/Library/LaunchDaemons/my.sidekqi.plist
来加载并启动守护程序,但系统控制台显示此启动的退出代码127(并反复尝试重新启动)。
如果我从命令行运行程序参数,我会收到“未找到Gemfile”错误(假设我不在rails项目目录中)。如果我从项目目录运行,sidekiq将启动。据我所知,WorkingDirectoy应该在指定的路径(这是我的rails项目路径)中执行bundle命令。
我认为问题源于在rails项目目录中未执行的bundle。所以要么我需要启动才能在工作目录中启动进程(由于某种原因这不起作用),或者在项目目录之外执行bundle命令,但不知何故指示它在gem文件所在的位置。
如果这很重要,我也在使用rvm。 ruby 1.9.3,rails 3.2.13,mac osx lion。
由于