Variável de ambiente RAILS_ENV
A variável de ambiente RAILS_ENV é usada para determinar em que am-
biente o Rails irá executar, por padrão sendo development. Assim, é pos-
sível executar comandos específicos para cada ambiente, basta fazer, por
exemplo:
RAILS_ENV=production rake db:create
85
4.3. Os primeiros comandos
Casa
do Código
4.3
Os primeiros comandos
Com seu terminal aberto na pasta do projeto (colchonet), execute o comando rails
server:
Comandos no terminal
A partir de agora, vou mostrar para você diversos comandos de terminal
e suas respostas. Por isso, nessas listagens você deve digitar apenas o que
segue o símbolo $ (dinheiro), ou se por um acaso a linha for muito longa,
será quebrada com o símbolo \(contra-barra). Exemplos:
$ rails server
=> Booting WEBrick
Nesse caso, você deverá digitar apenas rails server e apertar a tecla
Enter. O que não tiver esse prefixo será uma saída aproximada do que
você vai ver ao digitar o comando.
$ rails server
=> Booting WEBrick
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-06-08 23:38:43] INFO WEBrick 1.3.1
[2012-06-08 23:38:43] INFO ruby 1.9.3 (2012-04-20) [x86_64-darwin11.3.0]
[2012-06-08 23:38:43] INFO WEBrick::HTTPServer#start: pid=77137
port=3000
Abra o seu browser em http://localhost:3000/ e voilà, você verá uma bela página
preparada pela equipe do Ruby on Rails. Nessa página, há alguns passos, como usar
o comando rails generate para criar modelos e controles e remover o arquivo
public/index.html. Vamos seguir essa sugestão.
86
Casa do Código
Capítulo 4. Primeiros passos com Rails
Figura 4.3: Seja bem vindo ao Ruby on Rails
O comando rails generate é um comando bastante útil. Se você digitá-lo sem
parâmetros, pode ver uma lista do que pode ser gerado. Essa lista pode aumentar,
dependendo das gems que você instalar no Ruby on Rails. Vamos ver isso no futuro.
O Rails inclui várias ferramentas para você e esse script de geração de templates
é um ótimo exemplo de como a ferramenta te ajuda a automatizar tarefas repetitivas.
Nesse espírito, vamos agora começar a criar nosso primeiro recurso no sistema, o re-
curso quarto, ou Room, que terá um título, uma descrição e uma localização. Faremos
isso através do comando rails generate scaffold, que irá gerar vários arquivos
para nós:
$ rails generate scaffold room title location description:text
invoke active_record
create
db/migrate/20120609065934_create_rooms.rb
create
app/models/room.rb
invoke
test_unit
create
test/unit/room_test.rb
87
Casa do Código
Capítulo 4. Primeiros passos com Rails
Aqui podemos ver como o comando foi composto. Fazemos o generate de um
scaffold, ou andaime. Scaffolds são interessantes pois já geram desde o modelo até
a apresentação e páginas HTML, para que possamos modificar para ter o resultado
que quisermos.
Em seguida, especificamos o nome do recurso e seus atributos. Por padrão, todos
os campos serão string, ou um campo de texto curto a não ser que seja especificado,
como é o caso de description, a descrição de um quarto pode ser bem longa. Para
isso, podemos usar o : para especificar o tipo daquela informação.
O comando scaffold já gera tudo que é necessário para que possamos fazer as
operações mais comuns em um recurso, o famoso CRUD. CRUD nada mais é do
que create, retrieve, update e delete, ou criar, buscar/listar, editar e remover. Para tal,
primeiro precisamos criar o banco de dados. Não se preocupe em configurar um
servidor MySQL ou PostgreSQL por enquanto, pois vamos usar um banco de dados
bom e simples para o nosso propósito no momento, o SQLite. Para criar o banco de
dados e deixar tudo pronto para ver o resultado do scaffold, basta executar, na pasta
do projeto, os comandos rake db:create e rake db:migrate:
$ rake db:create
$ rake db:migrate
== CreateRooms: migrating =================================
-- create_table(:rooms)
-> 0.0019s
== CreateRooms: migrated (0.0020s) ========================
O primeiro irá criar o banco de dados, se não existir. No caso do SQLite,
o comando irá criar os arquivos db/development.sqlite3, db/test.sqlite3 e
db/production.sqlite3.
Em seguida, o rake db:migrate irá criar a tabela rooms no banco de dados
usando a migração gerada pelo gerador. Veremos no futuro o que é uma migração,
não se preocupe se você não souber o que é isso.
89
Casa do Código
Capítulo 4. Primeiros passos com Rails
Logs
Toda a requisição que você fizer, você vai ver que o servidor do Rails
mostrar um monte de coisas, desde consultas SQL executadas até quando
o servidor serve arquivos estáticos. Todo este texto será enviado também
para a pasta log, no arquivo com o nome do ambiente em execução (por
exemplo, log/development.log):
Started GET "/rooms" for 127.0.0.1 at 2012-08-14 21:58:15 -0700
Processing by RoomsController#index as HTML
Room Load (0.2ms) SELECT "rooms".* FROM "rooms"
Rendered rooms/index.html.erb within layouts/application (2.1ms)