0

我在单个 VPS 上拥有一些 Rails 应用程序。我使用的是 nginx、passenger、mysql 和 rails 4。其中两个应用程序在生产环境中运行良好,但我的一个应用程序没有切换到生产环境。它只是停留在开发中。我使用 mina 进行部署。我一直在努力找出原因。

在我的/etc/nginx/nginx.conf我有

 passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.in$
 passenger_ruby /home/ME/.rbenv/shims/ruby;
 passenger_app_env production;

我的每个应用程序的服务器块都是这样的(用相应的应用程序名称替换“mysite”)

server {
    listen 80;
   # listen [::]:80 ipv6only=on;

    server_name mysite.com www.mysite.com;
    passenger_enabled on;
    passenger_friendly_error_pages on;
    rails_env    production;
    root         /var/www/mysite.com/current/public;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

任何人都可以帮忙吗?我认为我没有更改应用程序代码中的任何内容,但是任何人都可以想到我可能更改的内容吗?是否有任何我可以更改的rails文件会导致这种情况?谢谢。

2014 年 7 月 13 日更新 所以我已经从服务器上的应用程序中完全删除了文件并重新部署,但我仍然遇到问题。我正在使用mina来部署我的应用程序,我跑了mina deploy --trace,它说它在做$ RAILS_ENV="production" bundle exec rake assets:precompile RAILS_GROUPS=assets. 我还在页脚 ( Rails.env.production?) 中添加了一个测试,它返回 false。谢谢你的帮助。

更新 7/14/14 所以为了测试它是我的服务器还是我的代码,我rails server -e production在我的开发机器上运行。Rails.env.production?返回 false我仍然有同样的问题。所以它显然在我的 Rails 代码中。我仍然不知道我可以改变什么。

4

1 回答 1

0

我太傻了,我想通了。我应该在页脚中发布我的代码

<%= debug(params) if Rails.env = "development" %>
<%= sanitize("<b>Ruby</b>: #{RUBY_VERSION} <b>Rails:</b> #{Rails.version}") if Rails.env == "development" %>
<%= Rails.env.production? %>

问题显然是我分配Rails.env给“开发”而不是检查它是否等于“==”。我改变了它,现在一切都很好。

于 2014-07-18T19:19:00.427 回答