2009-05-04 11 views
84

Byłoby wygodne użycie Ruby on Rails dla małego projektu strony internetowej, który nie potrzebuje obecnie bazy danych. Wiem, że mógłbym stworzyć pustą bazę danych w MySQL i przejść od tego miejsca, ale czy ktoś zna lepszy sposób na uruchamianie Railsów bez bazy danych?Jak skonfigurować Ruby na Railsach bez bazy danych?

Dzięki

Odpowiedz

52

Odkomentuj ta linia w pliku environment.rb:

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

w szynach 3 prostu wyjąć gem mysql z Gemfile – jspooner

+0

@jspooner usunięcie nazwy klejnot w Gemfile nie działał. –

+29

Jak zrobiłbyś to samo w Rails 4? –

13

Jeśli nie potrzebujesz bazy danych, to prawdopodobnie nie trzeba mieć większość Rails. Możesz chcieć pracować z mniejszą, bardziej konfigurowalną strukturą.

Sinatra to mały framework, który doskonale nadaje się do wyświetlania podstawowych stron statycznych.

Ale jeśli nalegasz na używanie Railsów here to artykuł, który pokaże ci, jak to zrobić, lub here.

+0

Podziękowania - oba te odsyłacze odnoszą się do książki Rails Recipes i zawierają kroki umożliwiające testowanie pracy z bazą danych mniej aplikacji szyn. Byłem leniwy i miałem nadzieję wykorzystać infrastrukturę szyn już na serwerze dla innych aplikacji, ale Sintatra wygląda intrygująco. – RobbieCanuck

+2

+1 dla Sinatry, dokładnie tego szukałem. –

+1

Nie zgadzam się. Active.com jest zbudowany na Railsach bez bazy danych, ponieważ wszystkie dane pochodzą z interfejsu API. – jspooner

84

Dla Rails 3 i Rails 4:

Use -O (Capital 'O') or --skip-activerecord option to generate an application without a database.

rails new myApp -O

lub

rails new myApp --skip-activerecord

Ta odpowiedź jest udostępnili od here


Dla Rails 5:

Use --skip-active-record option to generate an application without a database

Zawiadomienie dodatkowy myślnik '-', w przeciwieństwie do poprzednich wersji Rails.

rails new myApp --skip-active-record

+3

To również działa dla Rails 4, jak sądzę. – Hana

+2

tak, działa to z Railsami 4 :) - właśnie sprawdzone. Jeśli chcesz zrezygnować z testowania, użyj: rails new myApp-O --skip-bundle -T –

+1

Jest to zdecydowanie najłatwiejszy sposób, jeśli zaczynasz od zera, choć ostrzegamy, że (przynajmniej w Railsach 4.0.1) w tym poleceniu występuje "-" między aktywnym a rekordem. Powinien więc przeczytać: rails new myApp --skip-active-record –

13

W Rails 4 przy rozpoczynaniu nowego projektu można użyć -O lub --skip czynne rekord

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

Jeśli masz już projekt trzeba będzie komentować

require "active_record/railtie" 

z config/environment.rb i

config.active_record.migration_error = :page_load 

z config/environments/development.rb

37

dla istniejącej Rails 4/5 projekt w pliku config/application.rb masz następujący wiersz:

require 'rails/all' 

(Jako że linia odniesienia jest ładowany this file)
Więc zamiast obciążenia wszystkim musisz aby załadować każdą bibliotekę osobno w następujący sposób:

# 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 "sprockets/railtie" 
require "rails/test_unit/railtie" 

Miej oko na komentarze, aby wiedzieć, co załadować w związku z wersją Rails. Następnie wypowiedzieć również następujące linie:

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

#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 

Opcjonalnie można usunąć wszelkie odniesienia do klasy ActiveRecord.

rm app/models/application_record.rb 
+2

Dla Rails 5 możesz również chcieć wymagać 'active_job/railtie' oraz' action_cable/engine' –

+0

@IngmarasKeleras added, thanks! –

+0

Czy nie ma atrapy adaptera DB do użycia w 'database.yml', więc po prostu zignoruje DB? – Chloe

Powiązane problemy