Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

uninitialized constant ActiveSupport::EventedFileUpdateChecker in env config file

I'm new with Ruby on Rails. After run the 'bundle' command for update/install, When i try to do rails s or rails g mongoid:config console returns this message that start with:

/home/myUser/proyect/config/environments/development.rb:50:in `block in <top (required)>': uninitialized constant ActiveSupport::EventedFileUpdateChecker (NameError)

This is my Gemfile (Yes, i want to use MongoDB as the Database):

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.6'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Mongoid as the database
gem 'mongoid', '~> 5.1.0'
# Use bson
gem 'bson_ext'
# Use Puma as the app server
gem 'puma', '~> 3.0'
#Use Haml for html
gem 'haml'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# 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/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5.x'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

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

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

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

And the config/environments/development.rb file:

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports.
  config.consider_all_requests_local = true

  # Enable/disable caching. By default caching is disabled.
  if Rails.root.join('tmp/caching-dev.txt').exist?
    config.action_controller.perform_caching = true

    config.cache_store = :memory_store
    config.public_file_server.headers = {
      'Cache-Control' => 'public, max-age=172800'
    }
  else
    config.action_controller.perform_caching = false

    config.cache_store = :null_store
  end

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false

  config.action_mailer.perform_caching = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations.
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  # Raises error for missing translations
  # config.action_view.raise_on_missing_translations = true

  # Use an evented file watcher to asynchronously detect changes in source code,
  # routes, locales, etc. This feature depends on the listen gem.
  config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end
like image 258
Marcos R. Guevara Avatar asked Jun 22 '16 20:06

Marcos R. Guevara


3 Answers

According to Rails changelogs, config.file_watcher option has been introduced in Rails 5. It allows you to have an auto-reloading based on your file changes. This feature depends on the listener gem, and you have it listed in your gemfile. But what seems suspicious to me is your Rails version!

gem 'rails', '4.2.6'
# but rails 4 does not support that feature!

Looks like you've got a Gemfile (or development.rb config?) copied from another version of Rails framework, another project, or manually changed your gemfile version to unappropriate state.

Two options I could suggest you are:

  1. To change your rails gemfile version to the cutting edge one as follows:

    gem 'rails', github: 'rails/rails'
    

    And bundle once more;

  2. To remove config.file_watcher line from your config file.

like image 112
twonegatives Avatar answered Nov 19 '22 04:11

twonegatives


tl;dr: Re-create your Rails project, providing the specific Rails version.

Often this occurs because you have a newer version of Rails installed than the one called for in your .railsrc or template.rb.

If this is the case, when you run rails new my_new_app, the newest version is used by default for the earlier steps of the process, but then once the template/railsrc version is installed, latter steps use this version. This causes compatibility issues.

You can verify that this is your problem by comparing the output of rails -v (in the directory where you called rails new) with what's in your .railsrc or template.rb. If they are different, there is an easy fix:

Recreate your Rails app, specifying the same Rails version from your .railsrc or template.rb in the command line call:
rails _4.2.5.1_ new my_new_app

like image 2
Scott Schupbach Avatar answered Nov 19 '22 04:11

Scott Schupbach


if you remove config.file_watcher = ActiveSupport::EventedFileUpdateChecker it will work. It detects changes in the source code to refresh asynchronously, but it also depends on the listen gem and as you're a beginner, it will only cause trouble to you. Should work without it.

like image 1
Ronan Lopes Avatar answered Nov 19 '22 04:11

Ronan Lopes