ошибка запуска мастера (server.rb: 33, отсутствует аргумент ...) - PullRequest
8 голосов
/ 19 марта 2012

После попытки запустить мастера, я получаю эту ошибку (обратите внимание, что, похоже, она работает на heroku, хотя, я думаю, это сугубо локальная проблема):

hrn039:textthechange jon$ foreman start
02:20:00 web.1     | started with pid 7363
02:20:01 web.1     | /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:33:in `parse!': missing argument: -e (OptionParser::MissingArgument)
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:280:in `parse_options'
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:180:in `options'
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:54:in `set_environment'
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:42:in `initialize'
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `new'
02:20:01 web.1     |    from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>'
02:20:01 web.1     |    from script/rails:6:in `require'
02:20:01 web.1     |    from script/rails:6:in `<main>'
02:20:01 web.1     | process terminated
02:20:01 system    | sending SIGTERM to all processes

Procfile имеет только одну строкукак указано heroku

web: bundle exec rails server thin -p $PORT -e $RACK_ENV

И мой гемфайл содержит

gem 'thin'

Google не очень помогает с этой ошибкой.

Спасибо!

Ответы [ 3 ]

21 голосов
/ 04 апреля 2012

Речь идет не о выполнении на Heroku - обратите внимание, что первоначальный вопрос о - это выполнение с Foreman - локальное выполнение.

Вы можете повторить свою ошибку, выполнив следующее:

рельсы серверные тонкие -e

Это действительно то, что работает Форман, учитывая ваш Procfile:

web: комплектация exec rails server thin -p $ PORT -e $ RACK_ENV

Так что я собираюсь догадаться, что вы не передаете аргумент -e. то есть. Вы не определили RACK_ENV локально.

Что вы можете сделать, это создать файл .env в вашем локальном каталоге, что-то вроде

RACK_ENV = развитие

PORT = 3000

Foreman автоматически подберет локальный файл .env и соответствующим образом настроит среду, прежде чем создавать процесс на основе объявления типа вашего процесса.

0 голосов
/ 03 апреля 2012

Я только что столкнулся с этой же проблемой.Если вы измените свой Procfile на

web: bundle exec rails server thin -p $PORT

, он должен работать.Обратите внимание, что для этого используется тонкий порт по умолчанию 5000 вместо 3000 (что означает, что вам нужно перейти на http://localhost:5000, чтобы увидеть ваше приложение.

Имея только

web: bundle exec rails server thin

в вашем Procfile будет использоваться порт 3000, но это приведет к ошибкам в Heroku.

0 голосов
/ 19 марта 2012

У меня была такая же проблема с rails v3.2 в Ubuntu 10.04. Мне удалось похудеть, выполнив следующие действия:

  1. Измените свой Procfile следующим образом:

    web: bundle exec rails server thin -p $ PORT -e development

  2. Добавьте $stdout.sync = true в верхней части файла config.ru, чтобы направить вывод сервера на ваш терминал (в противном случае вы не получите вывод на свой терминал)

Скажите, работает ли он!

...