Как добавить базу данных активных записей обратно в Rails 5, созданный с помощью --skip-active-record - PullRequest
0 голосов
/ 15 января 2019

Рассматриваемое приложение rails было изначально создано с использованием --skip-active-record, поскольку база данных не нужна.

Теперь необходимо добавить в приложение базу данных MySQL. Как преобразовать приложение Rails без базы данных в базу данных?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

первое, что я сделал после прочтения вашего вопроса, это создал 2 новых проекта на моем компьютере

rails new test-db и rails new test-no-db --skip-active-record теперь у меня должно быть 2 проекта, которые идентичны, но 1 не имеет активной записи теперь можно запустить разницу между двумя каталогами diff --brief -r test-db/ test-no-db/

файлы, которые меняются

1) Gemfile

# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'

2) app / assets / javascripts / application.js

//= require activestorage

3) Добавить этот файл

#test-db/app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

4) test-db / bin / setup

chdir APP_ROOT do
  ...
  puts "\n== Preparing database =="
  system! 'bin/rails db:setup'
  ...
end

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

0 голосов
/ 16 января 2019

Это то, что я сделал:

  1. Поднимитесь на один уровень вверх по вашему приложению папки и снова введите команду rails new, нажимайте ввод каждый раз, чтобы переопределить конфликты

rails new my_app_name -d mysql

Используйте инструмент git для просмотра изменений в файлах вашего приложения (RubyMine, gitg, smartgit)

Файлы изменены:

config/application.rb
config/environments/development.rb
config/environments/production.rb
config/initializers/wrap_parameters.rb
Gemfile
bin/setup
bin/update
test/test_helper.rb

Новые файлы

config/database.yml
app/models/application_record.rb
db/seeds.rb

Подробности (просмотр различий - для удаленных + добавленных):

config / application.rb

-# Pick the frameworks you want:
-require "active_model/railtie"
-require "active_job/railtie"
-# require "active_record/railtie"
-require "action_controller/railtie"
-require "action_mailer/railtie"
-require "action_view/railtie"
-require "action_cable/engine"
-require "sprockets/railtie"
-require "rails/test_unit/railtie"
+require 'rails/all'

config / environment / development.rb

+# Raise an error on page load if there are pending migrations.
+config.active_record.migration_error = :page_load

config / environment / production.rb

+ # Не сбрасывать схему после миграции.+ config.active_record.dump_schema_after_migration = false

Gemfile

+# Use mysql as the database for Active Record
+gem 'mysql2', '>= 0.3.18', '< 0.6.0'

bin / setup

+# puts "\n== Copying sample files =="
+# unless File.exist?('config/database.yml')
+#   cp 'config/database.yml.sample', 'config/database.yml'
+# end

+puts "\n== Preparing database =="
+system! 'bin/rails db:setup'

bin / update

+puts "\n== Updating database =="
+system! 'bin/rails db:migrate'

app /models / application_record.rb

+class ApplicationRecord < ActiveRecord::Base
+  self.abstract_class = true
+end

config / database.yml

+default: &default
+  adapter: mysql2
+  encoding: utf8
+  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
+  username: root
+  password:
+  host: localhost

+development:
+  <<: *default
+  database: app-without-activerecord_development

+test:
+  <<: *default
+  database: app-without-activerecord_test

+production:
+  <<: *default
+  database: app-without-activerecord_production
+  username: app-without-activerecord
+  password: <%= ENV['APP-WITHOUT-ACTIVERECORD_DATABASE_PASSWORD'] %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...