I'm at the end of Simply Rails 2 book and everything has worked so far, until I tried to deploy the shovell production app on my shared hosting service. I'm getting a 500 Internal Server Error. My host is BlueHost and they are running:
- Rails 2.2.2 (which is what I developed in)
- Apache front-end
- FastCGI back-end (no Mongrel)
- MySQL (no SQLite)
I know their configuration works because I created a test app according to their instructions (the top Google search on "How to set up Ruby on Rails Bluehost" has them). I also spent a few hours on the phone with their upper-level support. Together we tested all sorts of things short of getting into the app, and they concluded there was something wrong with my app.
I know it seems like a really broad question, but if anyone has a suggestion on what I can try to isolate the problem beyond a generic 500 error I'd welcome the help. I feel I've come so far working through all of the book problems it seems a shame that the deployment would fail.
Here's my database.yml (***** refers to private information)
Code:
development:
adapter: mysql
database: *****_shovelldev
host: localhost
username: *****_rails
password: *****
timeout: 5000
production:
adapter: mysql
database: *****_shovellprod
host: localhost
username: *****_rails
password: *****
timeout: 5000
test:
adapter: mysql
database: *****_shovelltest
host: localhost
username: *****_rails
password: *****
timeout: 5000
Here's my routes.rb:
Code Ruby:
ActionController::Routing::Routes.draw do |map|
map.resources :tags
# The priority is based upon order of creation: first created -> highest priority.
# Sample of regular route:
# map.connect 'products/:id', :controller => 'catalog', :action => 'view'
# Keep in mind you can assign values other than :controller and :action
# Sample of named route:
# map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
# This route can be invoked with purchase_url(:id => product.id)
# Sample resource route (maps HTTP verbs to controller actions automatically):
# map.resources :products
# Sample resource route with options:
# map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }
# Sample resource route with sub-resources:
# map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller
# Sample resource route with more complex sub-resources
# map.resources :products do |products|
# products.resources :comments
# products.resources :sales, :collection => { :recent => :get }
# end
# Sample resource route within a namespace:
# map.namespace :admin do |admin|
# # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
# admin.resources :products
# end
# You can have the root of your site routed with map.root
map.root :controller => "stories"
# See how all your routes lay out with "rake routes"
# Install the default routes as the lowest priority.
# Note: These default routes make all actions in every controller accessible via GET requests. You should
# consider removing the them or commenting them out if you're using named routes and resources.
map.resources :stories, :has_many => :votes, :collection => { :bin => :get }
map.resource :session
map.resources :users
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Note: I tried deploying the code from the book, but that was written with Rails 2.0.x so when I tried to do a rake task it failed because the ruby gem version didn't match that of the server.
Bookmarks