加勒特的回答真的很有帮助,只是想发布更多细节。花了很多功夫才把它弄好……
我也在使用乘客,但使用的是 nginx 而不是 apache。
首先,不要忘记你需要安装 sinatra,这让我很困惑。
sudo gem install sinatra
然后你需要为这个东西创建一个运行目录,它必须有一个 public 和 tmp 文件夹。它们可以是空的,但问题是 git 不会在 repo 中保存一个空目录。该目录必须至少有一个文件,所以我制作了一些垃圾文件作为占位符。这是 git 中一个奇怪的功能/错误。
我正在使用 resque 插件,所以我在那里创建了目录(默认的 config.ru 所在的位置)。看起来 Garrett 在他的 rails_root 中创建了一个新的“resque”目录。任何一个都应该工作。为了我...
cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt
然后我编辑MY_RAILS_APP/vendor/plugins/resque/config.ru
它看起来像这样:
#!/usr/bin/env ruby
require 'logger'
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'
use Rack::ShowExceptions
# Set the AUTH env variable to your basic auth password to protect Resque.
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
Resque::Server.use Rack::Auth::Basic do |username, password|
password == AUTH_PASSWORD
end
end
run Resque::Server.new
不要忘记更改ADD_SOME_PASSWORD_HERE
您要用于保护应用程序的密码。
最后,我使用的是 Nginx,所以这是我添加到我的 nginx.conf 中的内容
server {
listen 80;
server_name resque.seoaholic.com;
root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
passenger_enabled on;
}
所以它会在你的部署中重新启动,在你的 deploy.rb 中可能是这样的
run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"
我不确定这是否是最好的方法,我以前从未设置过 rack/sinatra 应用程序。但它有效。
这只是为了让监控应用程序运行。接下来我需要弄清楚上帝的部分。