จะเป็นการสะดวกที่จะใช้ Ruby on Rails สำหรับโครงการเว็บไซต์ขนาดเล็กที่ไม่จำเป็นต้องมีฐานข้อมูลในปัจจุบัน ฉันรู้ว่าฉันสามารถสร้างฐานข้อมูลเปล่าใน MySQL และไปจากที่นั่นได้ แต่มีใครรู้วิธีที่ดีกว่าในการเรียกใช้ Rails โดยไม่มีฐานข้อมูลหรือไม่?
ขอบคุณ
จะเป็นการสะดวกที่จะใช้ Ruby on Rails สำหรับโครงการเว็บไซต์ขนาดเล็กที่ไม่จำเป็นต้องมีฐานข้อมูลในปัจจุบัน ฉันรู้ว่าฉันสามารถสร้างฐานข้อมูลเปล่าใน MySQL และไปจากที่นั่นได้ แต่มีใครรู้วิธีที่ดีกว่าในการเรียกใช้ Rails โดยไม่มีฐานข้อมูลหรือไม่?
ขอบคุณ
คำตอบ:
ยกเลิกการใส่ข้อคิดเห็นบรรทัดนี้ในenvironment.rb
ไฟล์:
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
สำหรับRails 3และRails 4 :
ใช้
-O
(Capital 'O') หรือ--skip-activerecord
ตัวเลือกเพื่อสร้างแอปพลิเคชันโดยไม่มีฐานข้อมูล
rails new myApp -O
หรือ
rails new myApp --skip-activerecord
คำตอบนี้ถูกแชร์ต่อจากที่นี่
สำหรับRails 5 :
ใช้
--skip-active-record
ตัวเลือกเพื่อสร้างแอปพลิเคชันโดยไม่มีฐานข้อมูล
ขอให้สังเกตยัติภังค์พิเศษ '-' เมื่อเทียบกับรุ่นก่อนหน้านี้ทางรถไฟ
rails new myApp --skip-active-record
-O
งานได้เท่านั้น ตัวเลือก--skip-activerecord
ไม่ทำงาน
--skip-active-record
(สังเกตเส้นประระหว่าง active nad record) วิธีอื่นไม่ได้ผลสำหรับฉัน
สำหรับโปรเจ็กต์ Rails 4/5/6 ที่มีอยู่ในconfig/application.rb
ไฟล์ของคุณคุณมีบรรทัดต่อไปนี้:
require 'rails/all' # or `require "rails"' in newer versions
(อ้างอิงว่าบรรทัดกำลังโหลดไฟล์นี้ )
ดังนั้นแทนที่จะโหลด 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 "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
ดังนั้นมันจะเพิกเฉยต่อ DB หรือไม่?
rake assets:precompile
เนื่องจากNoMethodError: undefined method
active_record'`: /
activerecord-nulldb-adapter
จาก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 / environment / development.rb
สำหรับรองรับ Rails 6 rc1 และ 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