2015-09-02 5 views
1

У меня есть приложение Rails, которое использовало Mongoid 4.0.2. Я модернизировал Mongoid до версии 5.0.0 и начать получать эту ошибкуОбновление Ruby on Rails Mongoid до версии 5.0.0

....gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb:19:in `block in <class:Railtie>': undefined method `register_preprocessor' for nil:NilClass (NoMethodError) 

Как решить эту проблему или любое руководство, как обновить Mongoid до версии 5.0.0?

Gemfile

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.0.beta4' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0.0.beta1' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/sstephenson/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jQuery as the JavaScript library 
gem 'jquery-rails', '~> 4.0.0.beta2' 
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.0' 
# bundle exec rake doc:rails generates the API under doc/api. 
gem 'sdoc', '~> 0.4.0', group: :doc 

#new gems 
#database 
gem 'mongoid', '~> 5.0.0.beta' 
gem "mongoid-paperclip", :require => "mongoid_paperclip" 
gem 'bson_ext' 
#stile 
gem "therubyracer" 
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS 
gem "twitter-bootstrap-rails" 
gem 'bootstrap_form' 
gem 'bootstrap-sass', '~> 3.3.4' 
gem 'bootswatch-rails' 
gem 'simple_form' 
gem 'mongo' 
gem "figaro" 
gem 'sidekiq' 
gem 'sidekiq-status' 
gem 'rubyzip' 
#gem 'sidekiq_status' 
#gem 'sidekiq-status' 
gem 'sinatra', require: false 
gem 'slim' 
gem 'capistrano', '~> 3.1.0' 

# rails specific capistrano funcitons 
gem 'capistrano-rails', '~> 1.1.0' 
gem 'capistrano-rails-console' 

# integrate bundler with capistrano 
gem 'capistrano-bundler' 

# if you are using RBENV 
gem 'capistrano-rbenv', "~> 2.0" 
gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq' 

gem 'capistrano-passenger' 
gem 'utf8-cleaner' 
gem "devise" 
gem 'rollbar', '~> 1.5.3' 


#gem 'bson', '~> 3.0' 
# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Use Unicorn as the app server 
# gem 'unicorn' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

group :development, :test do 
    gem 'thin' 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug' 

    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0.0.beta4' 

    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 

    #new gems 
    gem "rspec-rails" 
    gem 'pry-rails' 
    gem 'pry-rescue' 
    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'better_errors' 
    #gem 'mongoid-rspec', '~> 2.1.0' 


end 
+0

Нам нужна полная обратная трасса. – Anthony

+0

Я попытался обновить mongoid в существующем приложении my от 4.0.2 до 5.0.0.beta и не смог воспроизвести ту же проблему. Rails version = 4.2.1 Какова ваша версия Rails? –

+0

также включите 'Gemfile' – dimakura

ответ

0

Вот как я установил этот вопрос

  1. Удалены из Gemfile gem "less-rails"

  2. От application.rb удален require "mongo"

  3. В mongoid.yml изменен sessions: к clients:

0

Самое главное, чтобы искать при обновлении до Mongoid 5 является mongoid.yml

От:

<%= rails_env %>: 
    sessions: 
    default: 
     database: <%= mongodb_database %> 
     hosts: 
     - <%= mongodb_staging_host %> 
     username: <%= mongodb_user %> 
     password: <%= mongodb_password %> 
     options: 
     read: :primary_preferred 

To:

<%= rails_env %>: 
    clients: 
    default: 
     database: <%= mongodb_database %> 
     hosts: 
     - <%= mongodb_staging_host %> 
     options: 
     user: <%= mongodb_user %> 
     password: <%= mongodb_password %> 
     read: 
      mode: :primary_preferred 
  1. Изменить sessions в clients
  2. Move username (будет user) и password в options
  3. изменение read режима, как показано на рисунке, если у вас есть.

Bottomline, чтобы проверить mongoid.yml тщательно при сравнении с this page

2

Это выглядит как ошибка появилась снова в менее рельсы. Ошибка вообще не связана с Mongoid. Я начал получать ошибку пару дней назад на моем сервере разработки. Я решил проверить Github, чтобы узнать, была ли проблема об этом. Я обнаружил следующее сообщение об ошибке.

https://github.com/metaskills/less-rails/pull/112

Я изменил свой Gemfile к следующему, как это предусмотрено по ссылке, которую исправила ошибку.

gem "less-rails", :git => 'https://github.com/suzan2go/less-rails.git', :branch => 'fix-nomethoderror-for-sprockets3' 

На данный момент это решение не применяется к драгоценному камню. Думаю, скоро.

+0

Надеюсь, что это разрешится очень скоро, источник git, предоставленный suzan2go, работает для меня. –

Смежные вопросы