Вопрос

Теперь, когда Beta Rails 3 вышла, я подумал, что посмотрю на переписывание приложения, над которым я только что начал работать в Beta Rails 3, оба, чтобы почувствовать его и получить немного старта. Приложение использует MongoDB и Mongomapper для всех своих моделей и, следовательно, не нуждается в Activerecord. В предыдущей версии я разгружаю Activerecord следующим образом:

config.frameworks -= [ :active_record ]    # inside environment.rb

В последней версии это не работает - это просто бросает ошибку:

/Library/Ruby/Gems/1.8/gems/railties-3.0.0.beta/lib/rails/configuration.rb:126:in
  `frameworks': config.frameworks in no longer supported. See the generated 
  config/boot.rb for steps on how to limit the frameworks that will be loaded 
  (RuntimeError)
 from *snip*

Конечно, я посмотрел на boot.rb, как это предложило, но, насколько я вижу, здесь нет никакого понятия о том, как я могу разгрузить AR. Причина, по которой мне нужно это сделать, заключается в том, что не только глупо загружать то, что мне не нужно, но и жалуется на его неспособность установить соединение БД, даже когда я пытаюсь запустить генератор для контроллера. Это потому, что я вытер database.yml и заменил его деталями соединения для MongoDB, чтобы использовать эта суть Для использования database.yml для деталей соединения MongoDB. Не уверен, почему он должен быть в состоянии инициировать соединение БД вообще, чтобы в любом случае генерировать контроллер ....

Кто -нибудь знает о правильных рельсах 3 способа сделать это?

Это было полезно?

Решение

Я иду на это от прочтения источника, так что дайте мне знать, если это действительно сработало. :)

А rails Команда, которая генерирует шаблон приложения, теперь имеет опцию -O, что говорит это пропустить Activerecord.

Если вы не чувствуете себя как повторный rails, вы должны проверить следующее в вашем существующем приложении:

  • Убедитесь, что ваш config/application.rb не имеют require 'rails/all' или же require "active_record/railtie". Анкет Вместо этого для стандартной установки рельсов без Activerecord она должна иметь Только следующее требует:

    require File.expand_path('../boot', __FILE__)
    
    require "action_controller/railtie"
    require "action_mailer/railtie"
    require "active_resource/railtie"
    require "rails/test_unit/railtie"
    require "sprockets/railtie"
    
    # Auto-require default libraries and those for the current Rails environment. 
    Bundler.require :default, Rails.env
    
  • Если, в config/application.rb, вы используете config.generators раздел, убедитесь, что у него нет линии g.orm :active_record. Анкет Вы можете явно установить это на nil, если хотите, но это должно быть по умолчанию, когда g.orm полностью опущен.

  • Необязательно, но в вашем Gemfile, удалить gem Линия, которая загружает модуль для вашей базы данных. Это может быть линия gem "mysql" Например.

Другие советы

Рельсы 4

Я искал, как отключить его в Rails 4 и обнаружил только этот ответ, который больше не работает на рельсах 4. Так что вы можете сделать это в Rails 4 (проверено в RC1).

В новом проекте

rails new YourProject --skip-active-record

В существующем проекте

  • В вашем Gemfile удалите драгоценный камень драйвера базы данных, например, gem 'sqlite3' или же gem 'pg'.
  • В config/application.rb, замените require 'rails/all' с

    require "action_controller/railtie"
    require "action_mailer/railtie"
    require "sprockets/railtie"
    require "rails/test_unit/railtie"
    

  • В конфигурации/средах/разработке. config.active_record.migration_error = :page_load

  • Потенциально вам придется удалить помощников Active_record из spec_helper (через яд в комментариях)

  • Возможно, вам придется удалить промежуточное программное обеспечение для управления соединением (кажется, имеет место с единорогом): config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement" (с помощью https://stackoverflow.com/a/18087332/764342)

Я надеюсь, что это поможет другим искать, как отключить Activerecord в Rails 4.

Для нового приложения Rails вы можете исключить его активную запись, указав параметр-skip-active-рекорд. Например:

rails new appname --skip-active-record

Если вы создали новый проект с помощью Rails 3.2, вам также нужно будет прокомментировать:

config.active_record.mass_assignment_sanitizer = :strict

а также

config.active_record.auto_explain_threshold_in_seconds = 0.5

в твоей Development.rb файл.

Все вышеперечисленное верно. Еще одна вещь, которую я должен был сделать в Rails 3.1, - это прокомментировать

config.active_record.identity_map = true

в config/application.rb.

Если вы запускаете Rspec, вам также необходимо удалить (в spec_helper):

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

и удалить

  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  config.use_transactional_fixtures = true

Также комментарий вне

# config/application.rb    
config.active_record.whitelist_attributes = true

(отмечается на рельсах 3.2.13)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top