Je suis relativement nouveau dans les applications rails, mais j'ai une application rails qui fonctionne localement et que j'essaye de déployer dans un environnement partagé. serveur d'hébergement sur DreamHost. J'ai suivi toutes les questions du wiki et de stackoverflow, mais une réponse à cette question me manque toujours. Je suis en train de déployer avec Capistrano, et j'ai résolu tous les problèmes pour que les déploiements réussissent. Cependant, quand je vais accéder à tout ce qui est pas une ressource statique sur le site, je suis accueilli avec une « erreur interne du serveur » et cette erreur de passagers:'Fin de fichier inattendue détectée' lors du déploiement de l'application Rails sur Dreamhost sous Passager
Internal server error
Passenger encountered the following error:
The application spawner server exited unexpectedly: Unexpected end-of-file detected.
Exception class:
PhusionPassenger::Rack::ApplicationSpawner::Error
Backtrace:
# File Line Location
0 /dh/passenger/lib/phusion_passenger/rack/application_spawner.rb 134 in `start'
1 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 253 in `spawn_rack_application'
2 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 132 in `lookup_or_add'
3 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 246 in `spawn_rack_application'
4 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 82 in `synchronize'
5 /dh/passenger/lib/phusion_passenger/abstract_server_collection.rb 79 in `synchronize'
6 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 244 in `spawn_rack_application'
7 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 137 in `spawn_application'
8 /dh/passenger/lib/phusion_passenger/spawn_manager.rb 275 in `handle_spawn_application'
9 /dh/passenger/lib/phusion_passenger/abstract_server.rb 357 in `__send__'
10 /dh/passenger/lib/phusion_passenger/abstract_server.rb 357 in `server_main_loop'
11 /dh/passenger/lib/phusion_passenger/abstract_server.rb 206 in `start_synchronously'
12 /dh/passenger/helper-scripts/passenger-spawn-server 99
je peux SSH sur le serveur et exécuter manuellement 'rails s' pour faire fonctionner un serveur sur le port 3000, et tout fonctionne parfaitement.
Voici mon environment.rb:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
LoLItemDb::Application.initialize!
# potential fix for Dreamhost shared resources
# from: http://stackoverflow.com/a/3214748/189292
require 'rubygems'
require 'rubygems/gem_runner'
ENV['GEM_PATH'] = '/home/gravitydev/ruby/gems:/usr/lib/ruby/gems/1.8'
Gem.clear_paths
deploy.rb:
user = "XXXXXXXXX"
domain = "XXXXXXXXX.com"
database = "mysql.XXXXXXXXX.com"
set :application, "XXXXXXXXX"
set :rails_env, "production"
set :use_sudo, false
# set rake to be verbose for capistrano
# http://stackoverflow.com/questions/7071126/how-can-i-run-rake-with-trace-within-capistrano
set :rake, "#{rake} --trace"
# here we set a custom paths to commands since on Dreamhost
# servers the user path is a bit different
set :bundle_cmd, "/home/#{user}/.gems/bin/bundle"
require 'bundler/capistrano'
# redirect path for whenever, and use bundler to execute it
set :whenever_command, "/home/#{user}/.gems/bin/bundle exec whenever"
require 'whenever/capistrano'
# configure credentials
set :user, user
set :password, "XXXXXXXXX"
# configure git
default_run_options[:pty] = true # Must be set for the password prompt
# from git to work
set :repository, "[email protected]:XXXXXXXXX/XXXXXXXXX.git" # Your clone URL
set :deploy_to, "/home/#{user}/#{domain}"
set :scm, "git"
set :scm_passphrase, "XXXXXXXXX" # The deploy user's password
set :scm_verbose, true
set :git_shallow_clone, 1
# configure deploy location
set :deploy_to, "/home/#{user}/#{domain}"
# setup web server
server domain, :app, :web, :db, :primary => true
#server domain, :app, :web
#role :db, database, :primary => true
# for SSH
# see: http://wiki.dreamhost.com/Capistrano
set :chmod755, "app config db lib public vendor script script/* public/disp*"
# if you want to clean up old releases on each deploy uncomment this:
after "deploy:restart", "deploy:cleanup"
# run the all "LoL" tasks to refresh the database
#after "deploy:restart", "lol:all"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# for Passenger
namespace :deploy do
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
et Gemfile: la source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'bundler'
gem 'rake'
gem 'sqlite3'
gem 'haml'
gem 'nokogiri'
gem 'json'
gem 'whenever'
gem 'execjs'
gem 'therubyracer', :platforms => :ruby
gem 'mysql2'
gem 'rack'
gem 'RedCloth', '4.2.9'
gem 'jquery-rails'
gem 'capistrano'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
La plupart messages semblent suggérer que le chemin vers les gemmes est incorrect, mais j'ai fait tous les changements de configuration que je peux trouver en cherchant Google et la documentation de Dreamhost. Toute aide est grandement appréciée!
Cela m'a conduit dans la bonne direction, même si elle n'a pas été la réponse finale. Voir http://stackoverflow.com/a/11385960/189292 pour ce que j'ai fait pour résoudre ce problème. Merci pour la réponse! – gdavis