Tumgik
rayovomito-blog · 11 years
Text
Establecer base de datos principal en Heroku
Al trabajar en local uso SQLite3 y al subir las cosas a Heroku uso Postgres en su versión de prueba. Tengo la base de datos configurada del siguiente modo, tal cual aparece en la mayoría de tutoriales: DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/database.db") Al crear la base de datos en Heroku se almacena en algo como HEROKU_POSTGRESQL_COLOR_URL, sin embargo arriba hemos visto que usamos DATABASE_URL. Para ello solo tenemos que establecer la base de datos como primaria con heroku pg:promote HEROKU_POSTGRESQL_COLOR_URL Para mirar exactamente cómo se llama la base de datos podemos hacerlo con heroku config
0 notes
rayovomito-blog · 11 years
Text
Usar las ENV de Heroku en local
Cuando subes tu código a repositorios públicos lo idóneo es **hacerlo sin mostrar datos comprometedores**, como las claves únicas que te dan acceso a las diferentes APIs, la configuración de la base de datos y otros tipos de información sensible en general. Heroku te permite definir unas variables y luego recuperarlas con un simple ENV['COSA']. Definirlas es muy fácil: $ heroku config:add COSA=lo-que-sea La pega viene cuando trabajas en local, que te toca cambiar manualmente esos datos por las claves reales, o al menos marcarlas como alternativa: :cosa => ENV['COSA'] || 'clave-de-la-cosa' Pero haciendo esto volvemos a estar en las mismas de dejar la clave a vistas, así que no nos sirve (aunque la clave sea una generada para trabajar en desarrollo no queremos hacerla pública). Heroku [nos propone](https://devcenter.heroku.com/articles/config-vars) unas cuantas alternativas, como usar un plugin desarrollado por ellos mismos (pero que deberemos usar Foreman como servidor) o editar el fichero ~/.bashrc. Personalmente me gusta más otra opción que he encontrado googleando y me funciona a las mil maravillas. Añadimos al archivo /config/environment.rb el siguiente cacho de código: heroku_env = File.join(Rails.root, 'config', 'heroku_env.rb') load(heroku_env) if File.exists?(heroku_env) Esto buscará un archivo llamado heroku_env.rb en el directorio /config y lo cargará en caso de que exista. Es por tanto importante añadirlo a .gitignore para que funcione correctamente cuando estemos en desarrollo y para evitar que las claves se hagan públicas. En el archivo de marras no nos queda más que definir las variables y reiniciar el servidor para que todo funcione. ENV['COSA'] = 'la-clave-de-la-cosa'
0 notes
rayovomito-blog · 11 years
Text
Empezar con Ruby on Rails en Heroku
Nota: Este manual ha sido escrito para la versión 3.2 del framework
La versión gratuita de Heroku viene de perlas para probar las aberraciones que montamos en local con Rails.
Hay un manual oficial en su página, pero he hecho algunas modificaciones a mi gusto, así que a continuación dejo una versión personalizada según mis necesidades por el momento.
Lo primero de todo será necesario tener una cuenta de Heroku e instalar las herramientas en el ordenador desde el que vayamos a controlar el mundo. Tras logearnos con heroku login creamos la aplicación.
$ heroku apps:create como-quieras-que-se-llame
Antes de hacer push tenemos que tener en cuenta varias cosas:
Heroku no permite escribir en archivos, por lo que no nos dejará instalar la gema 'sqlite3' y en su lugar nos pedirá 'pg' para trabajar con PostgreSQL. Como cambiar el Gemfile cada vez es un coñazo definiremos que coja una u otra según el entorno en el que estemos.
group :development, :test do gem 'sqlite3' end group :production do gem 'pg' end
Por defecto Rails viene con Webrick, un servidor que está bien para pruebas locales pero que no será suficiente para pasar a producción. Desde Heroku nos recomiendan usar Thin, así que vamos a ello.
Requerimos la gema 'thin' y creamos el archivo Procfile en la raíz del proyecto. El contenido del archivo debe ser
web: bundle exec rails server thin -p $PORT -e $RACK_ENV
y además tenemos que guardar la configuración en un archivo .env, por lo que ejecutamos
$ echo "RACK_ENV=development" >>.env
y listo.
Cada vez que queramos empezar el servidor, ahora podremos hacerlo con foreman start si queremos usar Thin.
Es hora de reinstalar las dependencias de las gemas con
$ bundle install
Heroku funciona con Git, así que para subirlo hay que almacenarlo todo. Desde el directorio donde tengamos la aplicación ejecutamos
$ git init $ git add . $ git commit -m "primer commit" $ git push heroku master
Puedes sustituir heroku por la dirección del repositorio que puedes encontrar en el panel de administración.
Y ya solo nos falta migrar la base de datos para que todo funcione, así que desde el terminal una vez más
$ heroku run rake db:migrate
Para ver el resultado abrimos el navegador, o desde el mismo terminal
$ heroku open
0 notes