Ruby on Rails veritabanı olmadan nasıl yapılandırılır?


102

Bir veritabanına ihtiyaç duymayan küçük bir web sitesi projesi için Ruby on Rails kullanmak daha uygun olacaktır. MySQL'de boş bir veritabanı oluşturabileceğimi ve oradan gidebileceğimi biliyorum, ancak veritabanı olmadan Rails'i çalıştırmanın daha iyi bir yolunu bilen var mı?

Teşekkürler

Yanıtlar:



109

İçin raylar 3 ve raylar 4 :

Kullanım -O(Capital 'O') ya da --skip-activerecordseçenek bir veritabanı bir uygulamayı oluşturmak için.

rails new myApp -O

veya

rails new myApp --skip-activerecord

Bu Cevap buradan yeniden paylaşıldı


İçin Raylar 5 :

--skip-active-recordVeritabanı olmadan bir uygulama oluşturmak için seçeneği kullanın

Önceki Rails sürümlerinin aksine fazladan kısa çizgiye '-' dikkat edin .

rails new myApp --skip-active-record


2
evet, bu Rails 4 :) ile çalışır - yeni doğrulandı. Test birimini kullanmaktan vazgeçmek istiyorsanız: rails new myApp-O --skip-bundle -T
Chris Hough

1
Sıfırdan başlıyorsanız bu kesinlikle en kolay yoldur, ancak (en azından Rails 4.0.1'de) bu komutta aktif ve kayıt arasında bir '-' olduğu konusunda uyarılmanız gerekir. Öyleyse şunu okumalıdır: rails new myApp --skip-active-record
Nic Benders

1
Sadece sorunlarla karşılaştım ve fark ettim. Rails 4.2.x için yalnızca -Oçalışır. Seçenek --skip-activerecordçalışmıyor.
Nazar Hussain

Bu, rails-api'de de çalışır: rails new myApp -O. Teşekkürler
Abel

2
Herhangi birinin merak etmesi durumunda, Rails 5'te --skip-active-record(aktif nad kaydı arasındaki kısa çizgiye dikkat edin). Diğer yol benim için çalışmıyor.
audiodude

53

Mevcut bir Rails 4/5/6 projesi için config/application.rbdosyanızda aşağıdaki satıra sahipsiniz:

require 'rails/all' # or `require "rails"' in newer versions

(Bu satırın bu dosyayı yüklediğine referans olarak )
Dolayısıyla TÜMÜNÜ yüklemek yerine, her kitaplığı aşağıdaki gibi ayrı ayrı yüklemeniz gerekir:

# 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 sürümünüzle ilgili olarak ne yükleneceğini bilmek için yorumlara bir göz atın.
Ayrıca aşağıdaki dosyaları da kontrol edin (bunlara sahipseniz) ve aşağıdaki satırları yorumlayın:

# 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

Ayrıca ActiveRecord::Basemodel dosyalarınızdaki herhangi bir referansı kaldırın (veya varsa dosyaları silin). Örneğin, otomatik olarak oluşturulmuş app/models/application_record.rbdosya.


2
Rails 5 için şunları da isteyebilirsiniz active_job/railtieveaction_cable/engine
Ingmaras Keleras

2
DB'yi database.ymlyok sayacak şekilde kullanmak için sahte bir DB adaptörü yok mu?
Chloe

Rails 5 daha sonra active_record '' rake assets:precompilenedeniyle başarısızlık sorununa yol açar NoMethodError: undefined method : /
flp

3
@Chloe Github.com/nulldb/nulldb adresinden activerecord-nulldb-adaptergelen @Chloe , adaptörü geçici veya daha az invaziv bir değişiklik için değiştirmenize izin verir.
Unixmonkey

1
@cdmo hey, fark ettiğiniz için teşekkürler. Cevabı, raylarla tamamen uyumlu hale getirmek için güncelledim 6. Cevabınızda yorumladığınız her şeyden emin değilim, çünkü 2 ray uygulaması olan ve olmayan -Ove action_mailerbunlarla ilişkili olmadığından config/detabase.yml, yorum yapmaya gerek yok. Ayrıca active_storageyorumlandıktan sonra yorum yapılabilecek bazı ekstra satırlar vardır .
Lagos

16

Rails 4'te yeni bir projeye başlarken -O veya --skip-active-record kullanabilirsiniz.

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

Zaten bir proje oluşturduysanız, yorum yapmanız gerekecek

 require "active_record/railtie"

config / application.rb'den ve

 config.active_record.migration_error = :page_load

config / environment / development.rb'den


14

Bir veritabanına ihtiyacınız yoksa, muhtemelen Rails'in büyük kısmına sahip olmanıza gerek yoktur. Çalışmak için daha küçük ve daha özelleştirilebilir bir çerçeve isteyebilirsiniz.

Sinatra , temel statik sayfalara hizmet vermek için harika olan küçük bir çerçevedir.

Ancak Rails'i kullanmakta ısrar ediyorsanız, işte size bunu nasıl yapacağınızı veya burada gösterecek bir makale var .


Teşekkürler - bu bağlantıların her ikisi de Rails Recipes kitabına atıfta bulunur ve veritabanından yoksun bir ray uygulamasıyla test çalışması yapmaya yönelik adımları içerir. Tembel davrandım ve diğer uygulamalar için zaten sunucuda bulunan ray altyapısından yararlanmayı umuyordum, ancak Sintatra ilgi çekici görünüyor.
RobbieCanuck

1
Katılmıyorum. Active.com, tüm veriler bir api'den geldiği için veritabanına sahip olmayan Rails üzerine kurulmuştur.
jspooner

Not: Son cümledeki ikinci bağlantı artık mevcut değildir. 404 bulunamadı hatası alıyorum.
Pamela Cook - LightBe Corp

0

Destek Rails 6 rc1 ve activerecord-nulldb-adaptergem için maymun yamasına ihtiyacımız var

Gelen config / ilklendiriciler / 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.