在Ruby on Rails中部署特定于环境的.htaccess文件

时间:2011-08-22 15:56:47

标签: ruby-on-rails ruby-on-rails-3 .htaccess deployment capistrano

我有一个.htaccess文件,其中包含一行,用于指定我正在运行的应用程序的环境(登台,生产等)。

RackEnv staging

使用capistrano和capistrano-ext处理环境特定部署的最佳方法是什么?

以某种方式在capistrano任务中动态写入? 象征性地链接到特定于每个部署的现有共享.htaccess,其方式与对database.yml的方式非常相似?

还有其他选择吗?感谢

1 个答案:

答案 0 :(得分:3)

您可以将其添加到该应用的apache配置文件中,而不是将其添加到您的.htaccess文件中,通常这将是/ etc / apache2 / sites-available / yoursite

以下是您的设置...

等文件的示例
<VirtualHost *:80>
    ServerName  yoursite.com
            ServerAlias yoursite.* 

    DocumentRoot /var/www/httpdocs/current/public

    <Directory /var/www/httpdocs/current/>
        Allow from all
        Options -MultiViews
    </Directory>

    RackEnv staging
    RailsEnv staging

    # Logfiles
    ErrorLog  /var/www/logs/error.log
    CustomLog /var/www/logs/access.log combined
</VirtualHost>

然后在您的deploy.rb文件中分离出特定于站点的内容,例如......

task :staging do
    set :application, "yoursite"
    set :repository, "yoursite.git"
    set :branch, "master"
    set :deploy_to, "/var/www/httpdocs/currebt"
    server "staging.yoursite.com", :app, :web, :db, :primary => true
    set :rails_env, "staging"
end

如果完成所有设置,则可以运行

cap staging deploy