web-dev-qa-db-fra.com

Comment utiliser Licorne comme "Rails s"?

La variable Gemfile d'un nouveau projet Rails indique:

# 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é Unicorn 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?

49
patrick

Il semble que le Unicorn-Rails gem mentionné par @Dogbert puisse réellement être utilisé pour faire de Unicorn le gestionnaire Rails server.

Incluez simplement gem "Unicorn-Rails" (et pour Rails 4.2.4, gem "rack-handlers") dans votre Gemfile, exécutez bundle install pour installer la gem, puis vous pouvez exécuter:

$ Rails server Unicorn

Bien qu'une fois que Unicorn-Rails soit installé, Unicorn devrait être le serveur d'applications par défaut, vous pouvez donc simplement exécuter Rails server et utiliser Unicorn (en supposant que Thin ou Mongrel ne soient pas également présents dans Gemfile, auquel cas ils pourraient supprimer ceux que vous n'utilisez pas).

57
Stuart M

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

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

Rails server Unicorn
17
Tom Maeckelberghe

Je ne pense pas qu'il soit possible d'utiliser Unicorn comme "Rails s". Utilisez ceci - 

Ajoutez la gemme 'Unicorn' au fichier gem et lancez l'installation en groupe.

puis lancez l’une des commandes suivantes - 

Licorne $ -p 3000

ou

$ Unicorn_Rails -p 3000

1
prashant

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

Je lance 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

0
tokhi