2009-05-04 15 views
84

Sería conveniente usar Ruby on Rails para un proyecto de sitio web pequeño que no tiene una necesidad actual de una base de datos. Sé que podría crear una base de datos vacía en MySQL e ir desde allí, pero ¿alguien sabe una mejor manera de ejecutar Rails sin una base de datos?¿Cómo configurar Ruby on Rails sin base de datos?

Gracias

Respuesta

52

Descomentar esta línea en el archivo environment.rb:

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

en los carriles 3 acaba de quitar la gema mysql desde la Gemfile – jspooner

+0

@jspooner la supresión del nombre joya en Gemfile no funcionó. –

+29

¿Cómo harías lo mismo en Rails 4? –

13

Si usted no necesita una base de datos, entonces probablemente no necesita tener la mayor parte de los carriles. Es posible que desee un marco más pequeño y más personalizable para trabajar.

Sinatra es un pequeño marco que es ideal para servir páginas estáticas básicas.

Pero si insistes en usar Rails here es un artículo que te mostrará cómo hacer eso o here.

+0

Gracias - ambos enlaces se refieren al libro Rails Recipes y contienen los pasos para realizar pruebas trabajando con una base de datos- menos aplicaciones de rieles. Estaba siendo flojo y esperaba aprovechar la infraestructura de los rieles que ya estaba en el servidor para otras aplicaciones, pero Sintatra parece intrigante. – RobbieCanuck

+2

+1 para Sinatra, eso es exactamente lo que estaba buscando –

+1

No estoy de acuerdo. Active.com se basa en Rails sin base de datos porque todos los datos provienen de una API. – jspooner

84

Para Rails 3 y Carriles 4:

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

rails new myApp -O

o

rails new myApp --skip-activerecord

Esta respuesta es Publicación compartida de here


Para rieles 5:

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

Aviso adicional del guión '-' en contraposición a las versiones anteriores de Rails.

rails new myApp --skip-active-record

+3

Esto también sigue funcionando para Rails 4, creo. – Hana

+2

sí, esto funciona con Rails 4 :) - acaba de ser validado. Si quiere deshacerse de la unidad de prueba use: rails new myApp-O --skip-bundle -T –

+1

Esta es definitivamente la forma más fácil de hacerlo si está empezando desde cero, aunque tenga en cuenta que (al menos en Rails 4.0.1) hay un '-' entre activo y registro en ese comando. Entonces debería leer: rails new myApp --skip-active-record –

13

En Rails 4 al iniciar un nuevo proyecto en el que se puede utilizar -O o --skip-activa a grabar

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

Si ya ha creado un proyecto que tendrá que comentar

require "active_record/railtie" 

de config/application.rb y

config.active_record.migration_error = :page_load 

desde config/environments/development.rb

37

Por un rieles existentes 4/5 proyecto, en su archivo config/application.rb tiene la siguiente línea:

require 'rails/all' 

(Como referencia de esa línea se está cargando this file)
Así que en lugar de cargar todos, debe para cargar cada biblioteca por separado de la siguiente manera:

# 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" 

Mantenga un ojo a los comentarios para saber qué cargar con respecto a su versión de los carriles. A continuación, comentar también las siguientes líneas:

#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 

Opcionalmente se puede suprimir toda referencia a la clase ActiveRecord.

rm app/models/application_record.rb 
+2

Para Rails 5 es posible que también desee solicitar 'active_job/railtie' y' action_cable/engine' –

+0

@IngmarasKeleras agregadas, ¡gracias! –

+0

¿No hay un adaptador de base de datos ficticio para usar en 'database.yml' por lo que simplemente ignorará la base de datos? – Chloe