2016-01-21 3 views
0

До вчерашнего дня я мог запустить консоль рельсов, используя ярлык rails c в корне моего приложения для рельсов. Приложение настроено как приложение только для API, чтобы обслуживать мой угловой интерфейс. Когда я попытался запустить его прошлым ночью я получил следующее сообщение об ошибке:Начальные рельсы console throws error

Running via Spring preloader in process 5967 
/Users/Andrew/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.5/lib/action_dispatch/middleware/stack.rb:90:in `insert': can't modify frozen Array (RuntimeError) 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.5/lib/action_dispatch/middleware/stack.rb:90:in `insert' 
    from /Users/Andrew/sites/mine/K24/api/config/application.rb:15:in `<class:Application>' 
    from /Users/Andrew/sites/mine/K24/api/config/application.rb:10:in `<module:Api>' 
    from /Users/Andrew/sites/mine/K24/api/config/application.rb:9:in `<top (required)>' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:141:in `require_application_and_environment!' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:67:in `console' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /Users/Andrew/sites/mine/K24/api/bin/rails:9:in `<top (required)>' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
    from /Users/Andrew/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' 
    from /Users/Andrew/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /Users/Andrew/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from -e:1:in `<main>' 

Согласно этой ошибке он жалуется на проблемах в application.rb file я управлял дифом на папке и обнаружил, что различия были просто следующим»

  1. в application.rb я удалил комментарии только
  2. в маршрутах файл я добавил несколько новых маршрутов:.

    пост «обновление», чтобы : "Сообщения # обновление"

Я попытался исправить эту проблему, выполнив следующие действия:

  • Остановился и перезапустить Spring
  • Убраны дополнительные маршруты (т.е. маршрут обновления)
  • В соответствии с этим post я попытался добавить строку в файл application.rb:

    (Примечание - это не форматировать как блок кода по некоторым причинам) config.autoload_paths + = % W {# {config.root}/Lib}

Любые предложения о том, почему это происходит?

EDIT

Публикация содержимого 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(*Rails.groups) 

module Api 
    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 

    config.api_only = true 
    # Do not swallow errors in after_commit/after_rollback callbacks. 
    config.active_record.raise_in_transactional_callbacks = true 

    config.middleware.insert_before 0, "Rack::Cors", :debug => true, :logger => (-> { Rails.logger }) do 
     allow do 
     origins '*' 

     resource '/cors', 
      :headers => :any, 
      :methods => [:post] 

     resource '*', 
      :headers => :any, 
      :methods => [:get, :post, :delete, :put, :options, :head], 
      :max_age => 0 
     end 
    end 
    end 
end 
+0

Не могли бы вы разместить содержимое вашего файла 'application.rb'? – sjagr

+0

@sjagr see my edit above – Katana24

ответ

0

Мой редактировать в Барра-код ответа в, кажется, не были утверждены, но я дал ей +1, как это привело меня к ниже ответ.

Фактическая проблема заключалась в том, что gem spring в среде разработки фактически вызывал проблему. Комментирование t позволяет мне получить доступ к консоли rails - это исправляет вышеупомянутую проблему, однако это означает, что приложение вызывает еще одну ошибку, в которой она находится can't find a helper.

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

1

Я думаю, что проблема из-за этой линии: Bundler.require(*Rails.groups)

Перед запуском консоли, пакетирования пытается запустите свои драгоценные камни по этой линии. Проверьте свой Gemfile. Вы определили какие-либо группы (тест, разработка и т. Д.)?

Вы можете попробовать использовать вместо этого: Bundler.require(:default, :assets, Rails.env)

+0

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