steps rails new mvc first create blog and ruby-on-rails database sqlite postgresql heroku

ruby-on-rails - new - ruby and rails documentation



Cambio de SQLite a PostgreSQL en un nuevo proyecto de Rails (11)

Así es como tengo la configuración de la mina. Si solo está utilizando MRI y no Jruby, puede omitir la lógica en la configuración del adaptador.

defaults: &defaults adapter: <%= RUBY_ENGINE == ''ruby'' ? ''postgresql'' : ''jdbcpostgresql'' %> encoding: unicode pool: 5 timeout: 5000 development: database: project_development <<: *defaults test: database: project_test <<: *defaults production: database: project_production <<: *defaults

Tengo una aplicación de rieles cuyas bases de datos están en SQLite (El desarrollador y la producción). Como me estoy mudando a heroku, quiero convertir mi base de datos a PostgreSQL.

De todos modos, escuché que la base de datos de desarrollo local no necesita ser cambiada de SQLite, así que no necesito cambiar eso, sin embargo, ¿cómo hago para cambiar el entorno de producción de SQLite a PostgreSQL?

¿Alguien ha hecho esto antes y puede ayudar?

PD. No estoy seguro de cómo se llama exactamente este proceso, pero he oído hablar de migrar la base de datos de SQLite a PostgreSQL, ¿eso es lo que hay que hacer?


Como te estás moviendo a heroku, puedes usar los toques para hacer esto:

heroku db:push

Esto impulsará los datos locales de desarrollo de sqlite a la producción, y heroku se convertirá automágicamente en postgres para usted.

Esto también debería funcionar para impulsar una producción sqlite db a heroku, pero no está probado.

RAILS_ENV=production heroku db:push


Después de reemplazar gem ''sqlite3 con gem pg en el gemfile, seguí recibiendo el sqlite3 error al presionar a Heroku master porque olvidé confirmar el gemfile actualizado. Simplemente haciendo lo siguiente, resuelve esto:

git add . git commit -m ''heroku push'' heroku create git push heroku master


Los siguientes pasos me funcionaron. Utiliza la gema de grifos , creada por Heroku y mencionada en Railscast # 342 de Ryan Bates. Hay algunos pasos, pero funcionó perfectamente (incluso las fechas se migraron correctamente), y fue mucho más fácil que el Oracle -> DB2 o SQL Server -> migraciones de Oracle que he hecho en el pasado.

Tenga en cuenta que SQLite no tiene un id. De usuario o contraseña, pero la gema de grifos requiere algo. Acabo de usar los literales "usuario" y "contraseña".

Crear el usuario de la base de datos Postgres para las nuevas bases de datos

$ createuser f3 Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) y

EDITAR - Comando actualizado a continuación - use esto en su lugar

$ createuser f3 -d -s

Crea las bases de datos requeridas

$ createdb -Of3 -Eutf8 f3_development $ createdb -Of3 -Eutf8 f3_test

Actualiza el Gemfile

gem ''sqlite3'' gem ''pg'' gem ''taps'' $ bundle

Actualizar database.yml

#development: # adapter: sqlite3 # database: db/development.sqlite3 # pool: 5 # timeout: 5000 development: adapter: postgresql encoding: unicode database: f3_development pool: 5 username: f3 password: #test: # adapter: sqlite3 # database: db/test.sqlite3 # pool: 5 # timeout: 5000 test: adapter: postgresql encoding: unicode database: f3_test pool: 5 username: f3 password:

Inicie el servidor de tomas en la base de datos sqlite

$ taps server sqlite://db/development.sqlite3 user password

Migra los datos

$ taps pull postgres://f3@localhost/f3_development http://user:password@localhost:5000

Reinicie el servidor web Rails

$ rails s

Limpiar el Gemfile

#gem ''sqlite3'' gem ''pg'' #gem ''taps'' $ bundle


Puede cambiar su database.yml a este en lugar de usar el sqlite one de fábrica:

development: adapter: postgresql encoding: utf8 database: project_development pool: 5 username: password: test: &TEST adapter: postgresql encoding: utf8 database: project_test pool: 5 username: password: production: adapter: postgresql encoding: utf8 database: project_production pool: 5 username: password: cucumber: <<: *TEST



Se ha mencionado antes que yo, pero no tengo la reputación suficiente como para acecharlo. Con la esperanza de atraer un poco más de atención para los novatos de Rails al leer esta respuesta:

también necesitarás agregar la línea "gem ''pg''" a tu gemfile, ''pg'' es la gema actual de postgres para Rails.

^^^ Esta es una pieza clave además del archivo database.yml descrito en la respuesta seleccionada para migrar su aplicación Rails a Postgres.


Simplemente actualice el archivo config / database.yml:

default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: projectname_development test: <<: *default database: projectname_test production: <<: *default database: projectname_production username: password:

Lo anterior es lo que se genera cuando ejecutas:

$ rails new projectname --database=postgresql --skip-test-unit

También agregue esto a su Gemfile:

gem ''pg''


Simplemente actualiza tu datatbase.yml

development: &development adapter: postgresql database: Your_database_name username: user_name password: password host: localhost schema_search_path: public min_messages: warning test: <<: *development database: test_database_name production: <<: *development database: production_db_name

Estamos utilizando raíles y los estándares básicos deben seguir como DRY, Convención sobre Configuración, etc. por lo que en el código anterior no estamos repitiendo el mismo código una y otra vez.



también necesitarás agregar la línea " gem ''pg'' " a tu gemfile, ''pg'' es la gema actual de postgres para Rails.