178

Как я могу изменить приложение Rails для запуска в рабочем режиме? Есть ли файл конфигурации, например environment.rb, для этого?Измените приложение Rails на производство

+0

Кажется, что у второго ответа есть еще много голосов, вы бы хотели дать ему быстрый обзор и принять второй ответ, если у вас нет никаких проблем с ним. Только поможет будущим посетителям. Thx :) – Evolve

ответ

19

Изменить переменную окружения RAILS_ENV на production.

+1

где находится переменная среды? – BKSpurgeon

52

Если mipadi's suggestion не работает, добавьте в конфиг/environment.rb

# force Rails into production mode when       
# you don't control web/app server and can't set it the proper way     
ENV['RAILS_ENV'] ||= 'production' 
+0

Спасибо !!! Помог мне много. –

+0

Как насчет облачных сервисов, таких как Heroku? Может ли применяться к ним ENV ['RAILS_ENV'] || = 'production''? – Green

+0

Это не сработало на рельсах 4 – franzlorenzon

18

Вы также можете передать среду для сценария/сервера:

$ script/server -e production 
61

Если вы работаете на Passenger, то по умолчанию для запуска в производство, в вашем апача конф:

<VirtualHost *:80> 
    ServerName application_name.rails.local 
    DocumentRoot "/Users/rails/application_name/public" 
    RailsEnv production ## This is the default 
</VirtualHost> 

Если вы просто используете локальный сервер с беспородных или WEBrick, вы можете сделать:

./script/server -e production 

или в Баш:

RAILS_ENV=production ./script/server 

фактически отменяя постоянную RAILS_ENV в enviornment.rb, вероятно, следует ваше последнее средство, так как это, вероятно, не собирается оставаться множество (см another answer я дал на это)

341

Теперь это было бы

rails server -e production 

Или, более компактный

rails s -e production 

Она работает на рельсах 3+ проектов.

+30

или короткая версия 'rails s -e production' –

+1

Как насчет облачных сервисов, таких как Heroku? Как запустить на сервере 'server -e production'? – Green

+0

Облачные сервисы обычно имеют опции для указания среды, но в них 'production' неизменно является значением по умолчанию. –

2

В Rails 3

Добавление Rails.env = ActiveSupport::StringInquirer.new('production') в application.rb и rails s будет работать так же, как rails server -e production

module BlacklistAdmin 
    class Application < Rails::Application 

    config.encoding = "utf-8" 
    Rails.env = ActiveSupport::StringInquirer.new('production') 

    config.filter_parameters += [:password] 
    end 
end 
2

Это не является хорошим способом для запуска сервера рельсы в производственной среде; «rails server -e production», потому что тогда rails работает как однопоточное приложение и может отвечать только на один HTTP-запрос за раз.

Лучшая статья о производственной среде для рельсов Production Environments - Rails 3

+3

Ссылка на гниль ... доступна на машине с обратной связью: [ссылка] (http://web.archive.org/web/20121022083645/http:// ofps.oreilly.com/titles/9780596521424/production_id35801033.html) – rosuav

0

Пожалуйста, убедитесь, что вы сделали ниже в файле environment.rb.

ENV [ «RAILS_ENV»] || = «производства»

Если вы приложение работает в среде виртуального хостинга или phushion пассажира, возможно, потребуется необходимо внести изменения в .httaccess (внутри папки) и установить режим как производство.

1

для сервера по умолчанию: Rails S -e производства

для порта сервера Costum: Rails S -p [порт] -е производство, например. Rails S -p 3002 -e производство

12
rails s -e production 

Это будет работать сервер с RAILS_ENV = 'production'.

Помимо этого вы должны установить путь активов в production.rb

config.serve_static_assets = true 

Без этого ваши активы не будут загружены.

+0

Извините ... проголосовали, когда хотели повысить. Сделано небольшое изменение, чтобы исправить ошибку и повысить. – tomd

5

Как уже писал: rails server -e production

Или, мой личный фаворит: RAILS_ENV=productionrails s

4
RAILS_ENV=production rails s 

ИЛИ

rails s -e production 

По умолчанию среды является Developement.