web-dev-qa-db-ja.com

Unicornを「Rails s」として使用するにはどうすればよいですか?

新しいRailsプロジェクトのGemfileは以下を示します。

# Use Unicorn as the app server
gem 'Unicorn'

Rails s --helpの表示:

Usage: Rails server [mongrel, thin, etc] [options]

まだ、やっている:

Rails s Unicorn

私は得る:

/Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:63:in `require': cannot load such file -- rack/handler/Unicorn (LoadError)
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:63:in `try_require'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:16:in `get'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/server.rb:272:in `server'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/Rails/commands/server.rb:59:in `start'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/Rails/commands.rb:55:in `block in <top (required)>'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/Rails/commands.rb:50:in `tap'
from /Users/patrick/.rvm/gems/Ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/Rails/commands.rb:50:in `<top (required)>'
from script/Rails:6:in `require'
from script/Rails:6:in `<main>'

過去に他のプロジェクトでUnicornを使用しましたが、常にUnicornコマンドを実行し、設定ファイルを指定する必要がありましたが、これは少し面倒です。 Rails s...を使用して単純に機能させるにはどうすればよいのでしょうか

これは可能ですか?

50
patrick

Unicorn-Rails @Dogbertが言及したgemは、実際にUnicornをRails serverハンドラー。

単にgem "Unicorn-Rails"(およびRails 4.2.4、gem "rack-handlers"Gemfileで、bundle installを使用してgemをインストールすると、次を実行できます。

$ Rails server Unicorn

一度Unicorn-Railsがインストールされている場合、Unicornがデフォルトのアプリサーバーになるはずなので、単にRails serverそして、Unicornを使用する必要があります(GemfileにThinやMongrelも含まれていない場合、それらは競合する可能性があり、使用していないものは削除する必要があります)。

58
Stuart M

より良いオプションは、Unicornサーバーを直接実行することです。

bundle exec Unicorn -p 3000 # default port is 8080
24
Steven Soroka
gem 'rack-handlers'

Rails server Unicorn
17

Unicornを「Rails s」として使用することは不可能だと思います。これを使って -

Gem 'Unicorn'をgemファイルに追加し、バンドルインストールを実行します。

そして、次のコマンドのいずれかを実行します-

$ユニコーン-p 3000

または

$ Unicorn_Rails -p 3000

0
prashant

ただし、Stevenによる答えが最も簡単な方法です。

開発環境でrakeタスクを介してUnicornを実行します。

lib/tasks/dev_Unicorn.rake:

task :server do
  # optional port parameter
  port = ENV['PORT'] ? ENV['PORT'] : '3000'
  puts 'start Unicorn development'
  # execute Unicorn command specifically in development
  # port at 3000 if unspecified
  sh "cd #{Rails.root} && Rails_ENV=development Unicorn -p #{port}"
end
# an alias task
task :s => :server

実行:

rake s

リファレンス http://jing.io

0
tokhi