Как настроить Ruby on Rails без базы данных?

Было бы удобно использовать Ruby on Rails для небольшого проекта веб-сайта, который не нуждается в текущей базе данных. Я знаю, что могу создать пустую базу данных в MySQL и перейти оттуда, но кто-нибудь знает лучший способ запуска Rails без базы данных?

Спасибо

Ответ 1

Раскомментируйте эту строку в файле environment.rb:

config.frameworks -= [ :active_record, :active_resource, :action_mailer]

Ответ 2

Для Rails 3 и Rails 4:

Используйте -O (Capital 'O') или --skip-activerecord для создания приложения без базы данных.

rails new myApp -O

или

rails new myApp --skip-activerecord

Этот ответ помещен в здесь


Для Rails 5:

Использовать параметр --skip-active-record для создания приложения без базы данных

Обратите внимание на дополнительный дефис '-' в отличие от предыдущих версий Rails.

rails new myApp --skip-active-record

Ответ 3

Для существующего проекта Rails 4/5/6 в вашем файле config/application.rb есть следующая строка:

require 'rails/all'

(Как ссылка, эта строка загружает этот файл)
Таким образом, вместо загрузки ALL, вы должны загрузить каждую библиотеку отдельно следующим образом:

# active_record is what we're not going to use it, so comment it "just in case"
# require "active_record/railtie" 

# This is not loaded in rails/all but inside active_record so add it if
# you want your models work as expected
require "active_model/railtie" 
# And now the rest
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "active_job/railtie" # Only for Rails >= 4.2
require "action_cable/engine" # Only for Rails >= 5.0
require "active_storage/engine" # Only for Rails >= 5.2
require "action_mailbox/engine" # Only for Rails >= 6.0
require "action_text/engine" # Only for Rails >= 6.0
require "sprockets/railtie"
require "rails/test_unit/railtie"

Следите за комментариями, чтобы знать, что загружать относительно вашей версии Rails. Затем прокомментируйте также следующие строки:

#config/environments/development.rb
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true

#config/environments/production.rb
config.active_record.dump_schema_after_migration = false

#spec/rails_helper.rb
ActiveRecord::Migration.maintain_test_schema!

# Only for Rails >= 5.0
#config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true

При желании вы можете удалить любую ссылку на класс ActiveRecord.

rm app/models/application_record.rb

Ответ 5

Если вам не нужна база данных, то вам, вероятно, не нужна основная часть Rails. Вы можете хотеть меньшую более настраиваемую структуру, чтобы работать с.

Sinatra - это крошечный фреймворк, который отлично подходит для обслуживания основных статических страниц.

Но если вы настаиваете на использовании Rails, вот статья, которая покажет вам, как это сделать, или здесь.

Ответ 6

В Rails 4 при запуске нового проекта вы можете использовать -O или --skip-active-record

rails new my_project -O
rails new my_project --skip-active-record

Если вы уже создали проект, вам нужно будет прокомментировать

 require "active_record/railtie"

из config/application.rb и

 config.active_record.migration_error = :page_load

из config/environment/development.rb

Ответ 7

Для поддержки Rails 6 rc1 и activerecord-nulldb-adapter нам понадобится activerecord-nulldb-adapter обезьяны

В config/initializers/null_db_adapter_monkey_patches.rb

module ActiveRecord
  module ConnectionAdapters
    class NullDBAdapter < ActiveRecord::ConnectionAdapters::AbstractAdapter
      def new_table_definition(table_name = nil, is_temporary = nil)
        TableDefinition.new(table_name, is_temporary)
      end
    end
  end
end