53 votes

Comment utiliser une licorne comme "rails s"?

Le gemfile d'un nouveau projet de rails montre:

 # Use unicorn as the app server
gem 'unicorn'
 

rails s --help montre:

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

Pourtant, en faisant:

 rails s unicorn
 

Je reçois:

 /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>'
 

J'ai déjà utilisé licorne dans d'autres projets, mais je devais toujours exécuter la commande unicorn et spécifier un fichier de configuration, ce qui est un peu pénible. Je me demande comment je peux simplement le faire fonctionner en utilisant "rails s" ... Est-ce possible?

62voto

Stuart M Points 5635

Il ressemble à l' unicorn-rails gem @Dogbert mentionnés peuvent effectivement être utilisés pour faire de la Licorne rails server gestionnaire.

Il suffit d'inclure gem "unicorn-rails" votre Gemfile, exécutez bundle install pour installer le gem, puis vous pouvez exécuter:

$ rails server unicorn

Même si, une fois unicorn-rails est installé, la Licorne doit être la valeur par défaut de serveur d'applications de sorte que vous pourriez aussi il suffit d'exécuter rails server et il devrait utiliser la Licorne (en supposant que vous n'avez pas Mince ou Bâtards dans votre Gemfile, dans ce cas, ils peuvent entrer en conflit et vous pouvez supprimer ceux que vous ne l'utilisez pas).

26voto

Steven Soroka Points 8446

Une meilleure option pourrait simplement consister à exécuter directement le serveur de licorne.

 bundle exec unicorn -p 3000 # default port is 8080
 

19voto

Tom Maeckelberghe Points 1058
gem 'rack-handlers'

rails server unicorn

0voto

tokhi Points 1911

Cependant, la réponse de Steven est la manière la plus simple de le faire.

J'exécute unicorn sur l'environnement de développement via une tâche rake:

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
 

courir:

rake s

Référence http://jing.io

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X