我将在这里尝试做一个很长的故事。我在 Ubuntu 服务器上的 RefineryCMS 中构建了一个应用程序,一切正常,直到我开始收到以下错误消息:
.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.12/lib/active_support/dependencies.rb:242:in `require': no such file to load -- devise (LoadError)
我能够通过运行解决此错误
gem install devise
其次是
bundle install
和
bundle update
这解决了它无法启动的问题,但没有一个 url 工作,包括默认的,例如 /users/login 并且任何时候我会导航到这样的页面,我会页面显示错误
No route matches [GET] "/users/login"
认为这是我的 gemset 的问题,我创建了一个新的并设置了一个新的,然后启动了新的炼油厂应用程序,目的是将我的文件移到它上面。但是,当启动它以确保炼油厂正常工作时,它把我带到了默认的 rails 页面,在删除 /public/index.html 后我再次启动它并得到了同样的错误
No route matches [GET] "/users/login"
为了仔细检查炼油厂是否正常工作,我运行了一个简单的命令行命令来覆盖 /app/views/pages/show.html.erb 文件,该文件运行良好,然后再次启动并手动输入用户/注册页面的 url并再次遇到相同的路线错误。这几乎证实了我的路线被解释的方式存在一些问题,尽管我不知道在什么级别。
我在原始应用程序中使用 rails 版本 3.0.12、webrick 1.3.1 和 ruby 1.9.2。
目前这是我的 Gemfile:
source 'http://rubygems.org'
gem "devise"
gem "savon"
gem 'refinerycms-testing'
gem "factory_girl_rails"
gem "guard-rspec"
gem "rspec"
# gem 'rails', '3.0.0'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3', :require => 'sqlite3'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug'
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
# gem 'webrat'
# end
# REFINERY CMS ================================================================
# Anything you put in here will be overridden when the app gets updated.
#gem 'refinerycms', '~> 1.0.9'
=begin #testing
group :development, :test do
# To use refinerycms-testing, uncomment it (if it's commented out) and run 'bundle install'
# Then, run 'rails generate refinerycms_testing' which will copy its support files.
# Finally, run 'rake' to run the tests.
#gem 'refinerycms-testing'
gem 'capybara-webkit'
if RbConfig::CONFIG['target_os'] =~ /darwin/i
gem 'growl'
end
gem 'spork', '~> 0.9.0.rc', :platforms => :ruby
gem 'guard-spork', :platforms => :ruby
gem 'guard-rspec', :platforms => :ruby
gem 'generator_spec'
end
=end #testing
# END REFINERY CMS ============================================================
# USER DEFINED
# Specify additional Refinery CMS Engines here (all optional):
# gem 'refinerycms-inquiries', '~> 1.0'
# gem "refinerycms-news", '~> 1.2'
# gem 'refinerycms-blog', '~> 1.6'
# gem 'refinerycms-page-images', '~> 1.0'
# Add i18n support (optional, you can remove this if you really want to).
#gem 'refinerycms-i18n', '~> 1.0.0'
# END USER DEFINED
我的 routes.rb 文件看起来像:
Quicksmile::Application.routes.draw do
match "/" => redirect("/new-practices")
# The priority is based upon order of creation:
# first created -> highest priority.
# Sample of regular route:
# match 'products/:id' => 'catalog#view'
# Keep in mind you can assign values other than :controller and :action
# Sample of named route:
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
# This route can be invoked with purchase_url(:id => product.id)
# Sample resource route (maps HTTP verbs to controller actions automatically):
# resources :products
# Sample resource route with options:
# resources :products do
# member do
# get 'short'
# post 'toggle'
# end
#
# collection do
# get 'sold'
# end
# end
# Sample resource route with sub-resources:
# resources :products do
# resources :comments, :sales
# resource :seller
# end
# Sample resource route with more complex sub-resources
# resources :products do
# resources :comments
# resources :sales do
# get 'recent', :on => :collection
# end
# end
# Sample resource route within a namespace:
# namespace :admin do
# # Directs /admin/products/* to Admin::ProductsController
# # (app/controllers/admin/products_controller.rb)
# resources :products
# end
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
# See how all your routes lay out with "rake routes"
# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
# match ':controller(/:action(/:id(.:format)))'
end
为什么可能导致它停止识别原始应用程序或事后启动的新应用程序上的内置炼油厂路线?有没有办法解决它?如果没有,有没有办法将事情回滚到它们正常工作的点?