step "Cámbiate a tu directorio de inicio" do
insert 'cambia_al_directorio_principal'
end
step "Crea el directorio railsbridge" do
console "mkdir railsbridge"
message "`mkdir` significa crea un directorio (carpeta)."
message "We've made a folder called `railsbridge`."
message "Hemos creado una carpeta llamada `railsbridge`."
end
step "Cámbiate a tu nuevo directorio railsbridge" do
console "cd railsbridge"
end
step "Crea una nueva aplicación Rails" do
console "rails new test_app"
message "La salida de comandos será muy grande, y tomará algo de tiempo en completarse, con una pausa larga a la mitad, después de todos las sentencias 'create..' terminará con 'bundle install'. Cuando termine completamente, te regresará a tu línea de comandos. Busca el mensaje 'Your bundle is complete!' justo arriba."
tip do
message "En Linux, tal vez tendrás que habilitar esta línea en tu Gemfile:"
pre "gem 'therubyracer', :platforms => :ruby"
message "Sólo borra el '#' que está al frente del enunciado"
end
console "cd test_app"
console "rails server"
tip "En Windows, tal vez tendrás que permitir que Ruby y Rails se comuniquen a través de tu firewall. Di sí al popup."
tip "Atajo: Sólo escribe 'rails s'" do
message <<-MARKDOWN
A través de tu carrera de programación en Rails vas a escribir `rails server` muchas veces. De hecho,
lo escribirás tanto que DHH y el equipo del núcleo de Rails decidieron ahorrarte que presiones 5 teclas
cada vez que reinicies el servidor. Simplemente escribir `rails s` es lo mismo que `rails server`.
MARKDOWN
end
message <<-MARKDOWN
El primer comando no genera salida.
Si `rails server` inicia sin errores, ¡estás lista! Se verá algo así:
MARKDOWN
fuzzy_result <<-TEXT
=> Booting WEBrick
=> Rails 3.2{FUZZY}.x{/FUZZY} application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-09-30 21:04:12] INFO WEBrick 1.3.1
[2010-09-30 21:04:12] INFO ruby 1.9{FUZZY}.3 (2012-11-10) [x86_64-darwin10.4.2]{/FUZZY}
[2010-09-30 21:04:12] INFO WEBrick::HTTPServer#start: pid={FUZZY}24805{/FUZZY} port=3000
TEXT
message "Si así fue, ¡felicidades! haz instalado Ruby Y Rails correctamente y haz iniciado el servidor."
tip "Si no funcionó, pide ayuda a un instructor."
message <<-MARKDOWN
* En tu navegador, ve a <http://localhost:3000>
![Successful Rails Install](img/successful-rails-install.jpg)
* De nuevo en la ventana de la Terminal donde ejecutaste <code>rails server</code>, escribe **Control-C** (no escribas esto en la consola, sino que presiona las teclas Control y C al mismo tiempo) para matar(detener) el servidor. Windows preguntará "¿Termiar el trabajo en ejecución (S/N)?". Escribe "S".
MARKDOWN
important "En Windows, algunas veces Control-C no funciona. En este caso, busca la tecla 'Terminar' o 'Pausar' y presiona Control-Terminar, después responde S en la terminal de comandos. Si no hay una tecla de Pausa/Terminar en tu teclado, puedes ejecutar `ruby script/rails server` en vez de `rails server`, la cual te permitará terminar el servidor con Control-C."
end
step "Genera un modelo de base de datos" do
tip "Si tu terminal de comandos no muestra que (aún) estás en la carpeta test_app" do
console "cd test_app"
end
console <<-BASH
rails generate scaffold user name:string email:string address:text active:boolean
BASH
console <<-BASH
rake db:migrate
BASH
console <<-BASH
rails server
BASH
message "**Nota:** lo anterior son tres comandos separados. Escribe cada línea en la terminal separadamente, no como un sólo comando."
message "Espera hasta que la consola muestre que el servidor Webrick ha iniciado (justo como antes). Entonces, en el navegador, visita <http://localhost:3000/users>"
message "Haz click en *Nuevo usuario* para crear un usuario y asergurarte que puedes guardar en la base de datos. Haz click en *Atrás* para ver tus resultados. (La ventana donde ejecutaste `rails server` mostrará información de depuración mientras lo haces.)"
message "En la ventana de tu terminal donde ejecutaste `rails server`, escribe Control-C (o Control-Terminar, S) para matar(detener) el servidor."
end
step "Utiliza git" do
tip "si tu terminal de comandos no muestra que estás (aún) en la carpeta test_app" do
console "cd test_app"
end
console <<-BASH
git init
BASH
result "Initialized empty Git repository in c:/Sites/test_app/.git/"
console "git add -A"
tip "git add" do
message <<-MARKDOWN
Con Git, generalmente hay muchas maneras de hacer cosas similares.
* `git add foo.txt` agrega un archivo llamado `foo.txt`
* `git add .` ("git add dot") agrega todos los archivos nuevos y editados, pero *mantiene* los archivos que has eliminado.
* `git add -A` agrega todo, incluyendo archivos eliminados.
"Agregar archivos eliminados" puede oirse raro, pero si piensas en un sistema de control de versiones como una forma de mantener registro de *cambios*, puede que tenga más sentido.
MARKDOWN
end
console "git commit -m \"initial commit\""
result "muchas líneas como create mode 100644 Gemfile"
console "git log"
result "(Tu nombre en git y mensaje del \"commit inicial\".)"
end
step "Lanza tu aplicación a Heroku" do
step "Crea una aplicación de Heroku desde esta aplicación de Rails local" do
message "La primera vez que utilices `heroku` debes introducir tu correo electrónico de Heroku y tu contraseña. Tu contraseña no se verá mientras la escribes, pero no te preocupes, ¡si se introdujo! Si ya has proporcionado tus credenciales anteriormente, no te pedirá que las pongas de nuevo."
console "heroku create"
result <<-OUTPUT
Enter your Heroku credentials.
Email: myemail@example.com
Password:
Uploading ssh public key /Users/smei/.ssh/id_rsa.pub
Creating floating-winter-18... done, stack is cedar
http://floating-winter-18.heroku.com/ | git@heroku.com:floating-winter-18.git
Git remote heroku added
OUTPUT
message "A las aplicaciones de Heroku se les asignan nombres que se ven como '[adjetivo]-[sustantivo]-[número]. Cada nombre es diferente.'"
console "git remote show"
result "heroku"
message "Si aquí te salen mensajes advirtiendo sobre llaves públicas es posible que sea alguna confusión con alguna llave SSH utilizada por otra aplicación en tu computadora. LLama a un voluntario para que te ayude a resolverlo. Con suerte, esto sólo se necesitará hacer la primera vez que crees una aplicación de Heroku."
end
step "Prepara tu aplicación Rails para lanzarla a Heroku" do
message <<-MARKDOWN
Inicia tu editor de texto y abre el archivo "Gemfile" localizado dentro de tu carpeta test_app. (En Windows, debe de estar en `C:\\Sites\\test_app` y en Linux/OS X, debe de estar dentro de `~/test_app`.)
Dentro de este archivo, cambia la línea:
MARKDOWN
source_code :ruby, <<-RUBY
gem 'sqlite3'
RUBY
message <<-MARKDOWN
Por esto:
MARKDOWN
source_code :ruby, <<-RUBY
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
RUBY
message "Guarda los cambios del archivo."
tip "¿Por qué Sqlite (sqlite3) y PostgreSQL (pg)?" do
message "SQLite y PostgreSQL son diferentes tipos de bases de datos. Estamos usando SQLite para nuestros ambientes de desarrollo y pruebas porque es más simple de instalar. Estamos usando PostgreSQL: en nuestro ambiente de producción porque Heroku ya hizo el trabajo pesado de instalarlo por nosotros y es más potente que SQLite. Por defecto en Rails, se tienen serpados los ambientes de pruebas, desarrollo y producción."
end
console <<-BASH
bundle install --without production
BASH
message "De nuevo, espera por la entrada de la línea de comandos, y busca justo arriba el mensaje 'Your bundle is complete!'. Si esto falla, busca un instructor para que te ayude a editar `config/environments/production.rb`"
end
step "Agregar mis cambios a git" do
console <<-BASH
git add .
git commit -m "Updates for heroku deployment"
BASH
end
step "Lanza a Heroku" do
console "git push heroku master"
message "Posiblemente preguntará \"The authenticity of host 'heroku.com (75.101.145.87)' can't be established. RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad. Are you sure you want to continue connecting (yes/no)?\" Escribe <code>yes</code> y presiona *enter*."
result <<-OUTPUT
The authenticity of host 'heroku.com (75.101.145.87)' can't be established.
RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'heroku.com,75.101.145.87' (RSA) to the list of known hosts.
Counting objects: 60, done.
Compressing objects: 100% (54/54), done.
Writing objects: 100% (60/60), 79.03 KiB, done.
Total 60 (delta 10), reused 0 (delta 0)
-----> Heroku receiving push
-----> Rails app detected
Compiled slug size is 080K
-----> Launching...... done
App deployed to Heroku
To git@heroku.com:floating-winter-18.git
* [new branch] master -> master
OUTPUT
important "Asegúrate de encontrar y aprenderte el nombre de tu aplicación de Heroku en la salida de comandos."
message "Este proceso posiblemente tome el doble de tiempo que tu 'bundle install' y después regresará el puntero a tu línea de comandos. Si toma más tiempo que eso, llama a un instructor."
console "heroku run rake db:migrate"
result <<-OUTPUT
Running rake db:migrate attached to terminal... up, run.1
Migrating to CreateUsers (20111204065949)
== CreateUsers: migrating ====================================================
-- create_table(:users)
-> 0.0122s
== CreateUsers: migrated (0.0123s) ===========================================
OUTPUT
message "El número largo después de CreateUsers es una marca de tiempo. ¡La tuya será diferente!"
end
step "Visita tu nueva aplicación" do
message "En el navegador, ve a la URL de tu aplicación. Necesitarás el nombre de tu aplicación de Heroku."
tip "Para encontrar el nombre de tu aplicación de Heroku" do
console "heroku info"
end
tip "Para rápidamente abrir tu aplicación de Heroku en un navegador" do
console "heroku open"
end
message "La URL para tu aplicación es <code>*nombre-de-la-aplicación*.heroku.com</code> -- así que con el ejemplo del paso anterior, sería <code>floating-winter-18.heroku.com</code>. Verifica que puedes ver la página de bienvenida. Deja esta ventana del navegador abierta."
message "En el navegador, agrega <code>/users</code> al final del URL y presiona *enter*. Verifica que puedes ver la página del listado de usuarios."
message "Crea y guarda un nuevo usuario para verificar que puedes escribir a la base de datos en Heroku"
end
end
next_step "consigue_un_sticker"