2016-04-28 3 views
1

Здесь проблема в терминале:Stuck On Rails Применение

treehouse:~/projects/odot (master *) $ bin/rails generate model todo_item todo_list:references content:string -p 
/home/treehouse/projects/odot/config/application.rb:23:in `<class:Application>': undefined method `configure' for RSpec:Module (NoMethodError) 
    from /home/treehouse/projects/odot/config/application.rb:10:in `<module:Odot>' 
    from /home/treehouse/projects/odot/config/application.rb:9:in `<top (required)>' 
    from /home/treehouse/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:43:in `require' 
    from /home/treehouse/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:43:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 

Вот ODOT/конфигурации/application.rb файла:

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(:default, Rails.env) 

module Odot 
    class Application < Rails::Application 
    # Settings in config/environments/* take precedence over those specified here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 
    # config.time_zone = 'Central Time (US & Canada)' 

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
    # config.i18n.default_locale = :de 

    RSpec.configure do |c| 
     c.expose_current_running_example_as :example 
    end 

    RSpec.configure do |c| 
     c.expose_current_running_example_as :example 
    end 
    end 
end 

Здесь бен/файл Рельсы:

#!/usr/bin/env ruby 
APP_PATH = File.expand_path('../../config/application', __FILE__) 
require_relative '../config/boot' 
require 'rails/commands' 

Я не знаю, как получить доступ к файлам .rbenv/.....

Кажется, что я не могу обернуть голову тем, что не так. Это файлы по умолчанию, которые были в папке при запуске приложения списка рельсов todo. Я выполнил несколько тестов rspec в трех разных файлах, и после того, как закончил последний, это произошло, это не позволит мне приступить к выполнению каких-либо других задач.

Это держит продолжается, когда работает бен/грабли:

rake aborted! 
NoMethodError: undefined method `configure' for RSpec:Module 
/home/treehouse/projects/odot/config/application.rb:23:in `<class:Application>' 
/home/treehouse/projects/odot/config/application.rb:10:in `<module:Odot>' 
/home/treehouse/projects/odot/config/application.rb:9:in `<top (required)>' 
/home/treehouse/projects/odot/Rakefile:4:in `require' 
/home/treehouse/projects/odot/Rakefile:4:in `<top (required)>' 

Тогда вот файл rakefile:

# Add your own tasks in files placed in lib/tasks ending in .rake, 
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 

require File.expand_path('../config/application', __FILE__) 

Odot::Application.load_tasks 

Я понятия не имею, что происходит. При удаче? Приветствия.

+1

Если он работал ранее, возможно, ваш rbenv изменился. – Alfie

+0

Возможно, вы правы. Я столкнулся с некоторыми ошибками, создавая тестовый тест, который я попал в пакетное обновление, если это что-то разрешило. Оказывается, я забыл включить «сделать» в один из моих тестов rspec. Я не думаю, что это было бы так. Я не уверен, была ли у меня другая версия рейка или нет. Я не помню и не могу понять, что могло измениться. –

ответ

0

Не устанавливайте конфигурацию RSpec в application.rb. application.rb предназначен для базовой конфигурации приложения rails, которое применяется ко всем средам. Вы используете его для настройки таких вещей, как часовые пояса и какое промежуточное ПО, которое вы хотите использовать в стеке rails.

RSpec должен быть помещен в тестовую группу вашего Gemfile, чтобы он не загружался, когда это не было необходимо - IE в процессе производства.

gem 'something' 

group :test do 
    gem 'rspec-rails' 
end 

Существует также одна очень важная часть application.rb:

Bundler.require(:default, Rails.env) 

Который говорит Bundler, чтобы загрузить все драгоценные камни в группы по умолчанию и текущей «группы окружающей среды» (разработка, тестирование или производство) , Поэтому, если вы запустите свой сервер в процессе производства, он взорвется на линии RSpec.configure, так как RSpec gem не требуется (и не должно быть).

Правильное место для конфигурации Rspec - spec/spec_helper.rb или spec/rails_helper.rb.