8

foreman を起動しようとすると、次のエラーが表示されます (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

Profile には、heroku で指定された1 行しかありません

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

そして、私のgemfileには

gem 'thin'

このエラーに関して、Google はあまり役に立ちません。

ありがとう!

4

3 に答える 3

21

これは、Herokuでの実行に関するものではありません。元の質問は、ローカル実行であるForemanを使用した実行に関するものです。

次のコマンドを実行すると、エラーを再現できます。

Railsサーバーthin-e

Procfileを考えると、これが事実上Foremanが実行していることです。

web:バンドルexecrailsサーバーthin-p $ PORT -e $ RACK_ENV

したがって、-eに引数を渡していないと推測します。すなわち。RACK_ENVをローカルで定義していません。

あなたができることは.envあなたのローカルディレクトリに次のようなファイルを作成することです

RACK_ENV=開発

PORT = 3000

.envForemanは、プロセスタイプの宣言に基づいてプロセスを作成する前に、ローカルファイルを自動的に取得し、環境を適切に設定します。

于 2012-04-04T13:41:02.807 に答える
0

私はちょうどこれと同じ問題に遭遇しました。Procfileを

web: bundle exec rails server thin -p $PORT

動作するはずです。これは、3000ではなく5000のデフォルトのThinポートを使用することに注意してください(つまり、アプリを表示するにはhttp:// localhost:5000にアクセスする必要があります。

ただ持っている

web: bundle exec rails server thin

Procfileではポート3000を使用しますが、これによりHerokuでエラーが発生します。

于 2012-04-03T19:15:50.657 に答える
0

Ubuntu 10.04 の rails v3.2 でも同じ問題がありました。次の手順を実行することで、なんとかシンランニングを実行できました。

  1. 次のようにプロファイルを変更します。

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

  2. $stdout.sync = trueconfig.ru ファイルの先頭に追加して、サーバー出力を端末に送信します (そうしないと、端末に出力が得られません)。

それが機能するかどうか教えてください!

于 2012-03-19T19:14:12.870 に答える