问题
A new Rails project's Gemfile
shows:
# Use unicorn as the app server
gem 'unicorn'
rails s --help
shows:
Usage: rails server [mongrel, thin, etc] [options]
Yet, doing:
rails s unicorn
I get:
/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>'
I've used unicorn in the past on other projects, but always had to run the unicorn
command and specify a config file which is a bit of a pain. I am wondering how I can just simply make it work by using rails s...
Is this possible?
回答1:
It looks like the unicorn-rails gem that @Dogbert mentioned can actually be used to make Unicorn the rails server
handler.
Simply include gem "unicorn-rails"
(and for Rails 4.2.4, gem "rack-handlers"
) in your Gemfile
, run bundle install
to install the gem, then you can run:
$ rails server unicorn
Although once unicorn-rails
is installed, Unicorn should be the default app server so you could also just run rails server
and it should use Unicorn (assuming you don't also have Thin or Mongrel in your Gemfile
, in which case they may conflict and you might want to remove the ones you're not using).
回答2:
A better option might just be to run the unicorn server directly.
bundle exec unicorn -p 3000 # default port is 8080
回答3:
gem 'rack-handlers'
rails server unicorn
回答4:
However the answer by Steven
is the simplest way to do.
I run unicorn
on development environment via a rake task:
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
run:
rake s
Reference http://jing.io
回答5:
I don't think it is possible to use unicorn as 'rails s'. Use this -
Add gem 'unicorn' to gem file and run bundle install.
and then run any of the following commands -
$ unicorn -p 3000
or
$ unicorn_rails -p 3000
来源:https://stackoverflow.com/questions/15858887/how-can-i-use-unicorn-as-rails-s