Було б зручно використовувати Ruby on Rails для невеликого веб-проекту, який не має поточної потреби в базі даних. Я знаю, що міг створити порожню базу даних в MySQL і піти звідти, але хтось знає кращий спосіб запустити Rails без бази даних?
Дякую
Було б зручно використовувати Ruby on Rails для невеликого веб-проекту, який не має поточної потреби в базі даних. Я знаю, що міг створити порожню базу даних в MySQL і піти звідти, але хтось знає кращий спосіб запустити Rails без бази даних?
Дякую
Відповіді:
Відменте цей рядок у environment.rb
файлі:
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
Для рейок 3 і рейки 4 :
Використовуйте
-O
(величина "О") або--skip-activerecord
опцію для створення програми без бази даних.
rails new myApp -O
або
rails new myApp --skip-activerecord
Ця відповідь переглядається звідси
Для рейок 5 :
Використовуйте
--skip-active-record
опцію для генерації програми без бази даних
Зауважте додатковий дефіс '-' на відміну від попередніх версій Rails .
rails new myApp --skip-active-record
-O
працює лише Варіант --skip-activerecord
не працює.
--skip-active-record
(зверніть увагу на тире між активними над записом). Інший спосіб не працює для мене.
Для існуючого проекту Rails 4/5/6 у вашому config/application.rb
файлі є наступний рядок:
require 'rails/all' # or `require "rails"' in newer versions
(В якості посилання, що цей рядок завантажує цей файл )
Отже, замість завантаження ВСІХ, ви повинні завантажити кожну бібліотеку окремо так:
# 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 "sprockets/railtie"
require "rails/test_unit/railtie"
# All these depend on active_record, so they should be excluded also
# require "action_text/engine" # Only for Rails >= 6.0
# require "action_mailbox/engine" # Only for Rails >= 6.0
# require "active_storage/engine" # Only for Rails >= 5.2
Слідкуйте за коментарями, щоб знати, що завантажувати щодо вашої версії Rails.
Також перевірте такі файли (на випадок, якщо у вас є) та прокоментуйте наступні рядки:
# package.json
"@rails/activestorage": "^6.0.0",
# app/javascript/packs/application.js
require("@rails/activestorage").start()
# bin/setup
system! 'bin/rails db:prepare'
# config/environments/development.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true
# config/environments/test.rb
config.active_storage.service = :test # For Rails >= 5.2
# config/environments/production.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.dump_schema_after_migration = false
# spec/rails_helper.rb
ActiveRecord::Migration.maintain_test_schema!
# test/test_helper.rb
fixtures :all # In case you're using fixtures
# Only for Rails >= 5.0
#config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true
Також видаліть будь-які посилання на ActiveRecord::Base
файли вашої моделі (або просто видаліть файли, якщо вони застосовуються). Наприклад, автогенерований app/models/application_record.rb
файл.
active_job/railtie
іaction_cable/engine
database.yml
щоб він просто ігнорував БД?
rake assets:precompile
через NoMethodError: undefined method
active_record'`: /
activerecord-nulldb-adapter
from github.com/nulldb/nulldb дозволяє замінити адаптер для тимчасової або менш інвазивної зміни.
-O
і action_mailer
не пов’язані з ними config/detabase.yml
, тому не потрібно коментувати це. Також є кілька додаткових рядків для коментарів після active_storage
коментування.
У 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 / середовища / development.rb
Якщо вам не потрібна база даних, вам, ймовірно, не потрібно мати основну частину Rails. Можливо, ви хочете працювати з меншою рамкою, яка більше налаштовується.
Сінатра - це крихітна рамка, яка чудово підходить для розміщення основних статичних сторінок.
Але якщо ви наполягаєте на використанні Rails, ось стаття, яка покаже вам, як робити саме це чи тут .
Для підтримки Rails 6 rc1 і activerecord-nulldb-adapter
gem нам потрібна виправлення мавп
У config / inicijalizer / 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