Vous êtes sur la page 1sur 15

Rails Application Templates

por Nando Vieira

Copyright 2009 Simples Ideias & Nando Vieira. Todos os direitos reservados. Nenhuma parte desta publicao pode ser reproduzida sem o consentimento dos autores. Todas as marcas registradas so de propriedade de seus respectivos donos. Rails Application Templates, Nando Vieira, 1a verso Recomende Nando Vieira no site Working With Rails

Contedo
1 2 3 3 4 5 5 6 6 7 Introduo Utilizando templates Executando comandos do Git Criando arquivos Interagindo com o usurio Executando comandos Executando o Rails generator Criando Rakefiles Executando Rake tasks Instalando plugins 7 8 8 8 9 9 Adicionando gems como dependncia Criando arquivos de inicializao Adicionando o Rails Edge Usando o Capistrano Definindo rotas Executando comandos em diretrios

10 Criando arquivos nos diretrios lib e vendor 11 Substituindo textos em arquivos 11 Adicionando textos a arquivos

Captulo 1

Introduo
O Ruby on Rails 2.3 trouxe uma srie de novidades e uma das mais interessantes a possibilidade de se criar templates. Estes templates nada tem a ver com as views; na verdade, eles permitem criar tarefas que sero executadas e que normalmente voc faria manualmente, como: Criar repositrios Adicionar arquivos .gitignore Executar rake tasks Instalar plugins & gems Copiar arquivos de configurao

Estes so apenas alguns pouco exemplos do que voc pode fazer. Na prtica voc pode fazer o que quiser! Neste tutorial voc aprender como criar templates para personalizar seu aplicativo e evitar todo aquele trabalho manual e chato de aplicaes criadas do zero. Nando Vieira, Julho de 2009

Captulo 2

Utilizando templates
Antes de comear, certifique-se que tem o Ruby on Rails 2.3 ou superior instalado. Basta executar o comando abaixo para instalar a ltima verso disponvel:
$ sudo gem install rails Successfully installed rails-2.3.3

Para criar um aplicativo usando template, voc precisa executar o comando rails passando a opo --template-path ou, simplesmente -m. O endereo para o template pode ser um arquivo em disco local ou URL.
$ rails myapp --template-path=~/rails-templates/default.rb $ rails myapp -m ~/rails-templates/default.rb $ rails myapp -m http://github.com/fnando/howto/raw/rails-templates/default.rb

Os comandos acima utilizaro o template especificado, executando cada uma das diretrizes presentes neste arquivo. O template ser executado como Ruby e, por este motivo, voc pode executar o cdigo que quiser. No entanto, o Ruby on Rails adiciona uma srie de atalhos para comandos mais comuns, facilitando seu trabalho na hora de criar um novo template. seguir, voc ver como executar diversas tarefas no Rails Template, personalizando sua aplicao de acordo com suas necessidades.

Executando comandos do Git


O Git hoje um dos SCMs1 mais utilizados no momento, devido facilidade de seu uso e, em grande parte, pela existncia do Github e, obviamente, o Rails Template no iria deix-lo de fora! Voc pode executar qualquer comando Git com o mtodo git, como nos exemplos abaixo.
Download default.rb

git git git git

:init :add => ".", :commit => %(-m "Initial commit") :submodule => "init" :submodule => "update"

Criando arquivos
Criar arquivos extremamente simples. Basta utilizar o mtodo file fornecendo um caminho relativo raz do projeto e uma string.
Download default.rb

file ".gitignore", <<-TXT log/*.log tmp/**/* config/database.yml db/*.sqlite3 .DS_Store TXT

Para salvar uma URL qualquer como arquivo, basta utilizar o mtodo open.
1. Source Code Management 3

Download default.rb

file "config/locales/pt-BR.yml", open("http://github.com/svenfuchs/rails-i18n/raw/master/rails/locale/pt-BR.yml").read

Tambm possvel passar um bloco.


file "lib/ext.rb" do "WEB_APP_NAME = :sample" end

Voc no precisa se preocupar em criar o diretrio antes; caso ele no exista, ser criado automaticamente.

Interagindo com o usurio


Se voc precisa da resposta do usurio para definir alguma varivel ou configurao, pode utilizar o mtodo ask. Imagine que voc queria criar sua estrutura de biblioteca.
Download default.rb

lib_name = ask("What's your library name? Use something like YourLibraryName") file "lib/#{lib_name.underscore}/base.rb", <<-TXT module #{lib_name} module Base # put your code here end end TXT

Voc tambm pode executar uma ao somente se a resposta for yes ou no.
capify! if yes?("Should I run capify? (yes or no)") capify! if no?("Will you be using vlad to deploy your application? (yes or no)")

Executando comandos
O Rails Template possui um mtodo chamado run, que simplesmente um wrapper para o mtodo system, mais especificamente os backsticks2. Com ele voc pode executar qualquer comando na plataforma que voc est utilizando.
Download default.rb

run "rm public/index.html" run "ln -s public_stub public"

Executando o Rails generator


Sua aplicao pode precisar executar generators, como o caso do RSpec; esta uma tarefa para o mtodo generate.
Download default.rb

generate :rspec

Voc tambm pode passar argumentos para sua tarefa, como em um exemplo de scaffolding.
generate :scaffold, "user", "name:string", "email:string"

2. Por exemplo, `rm public/index.html` 5

Criando Rakefiles
O mtodo rakefile cria um novo arquivo rake no diretrio lib/tasks com as tarefas fornecidas.
rakefile "bootstrap.rake" do <<-TXT namespace :bootstrap do task :default => :init desc "Initialize project" task :init do require "FileUtils" FileUtils.mkdir("log") unless File.directory?("log") FileUtils.mkdir("tmp") unless File.directory?("tmp") FileUtils.cp("config/database.yml.sample", "config/database.yml") unless File.exists?("config/database.yml") end end TXT end

Executando Rake tasks


Para executar rake tasks, basta utilizar o mtodo rake.
Download default.rb

rake "bootstrap:init"

Se voc precisar executar uma tarefa em um ambiente especfico, pode utilizar a opo :env.
rake "db:migrate", :env => "test"

E se precisar de permisses de administrador, existe ainda a opo :sudo.


rake "gems:install", :sudo => true

Instalando plugins
Para instalar plugins, voc s precisa utilizar o mtodo plugin.
plugin "rspec", :git => "git://github.com/dchelimsky/rspec.git" plugin "rspec-rails", :git => "git://github.com/dchelimsky/rspec-rails.git" plugin "restful-authentication", :svn => "svn://svnhub.com/technoweenie/restful-authentication/trunk"

Adicionando gems como dependncia


Se voc precisa adicionar gems como dependncia, pode utilizar o mtodo gem.
Download default.rb

gem "hpricot", :version => "0.6" gem "fnando-recurrence", :source => "http://gems.github.com"

Infelizmente, no existe uma maneira de especificar qual o arquivo de ambiente voc quer utilizar. Uma alternativa utilizar o mtodo append_file.
append_file "config/environments/test.rb", %(\nconfig.gem "rspec") append_file "config/environments/test.rb", %(\nconfig.gem "rspec-rails")

Criando arquivos de inicializao


Para criar um arquivo de inicializao, basta utilizar o mtodo initializer. Ele ir criar o arquivo no diretrio config/ initializers.
Download default.rb

initializer "hoptoad.rb", <<-TXT HoptoadNotifier.configure do |config| config.api_key = "YOUR-API-KEY" end TXT

Adicionando o Rails Edge


Muitas vezes queremos manter nosso cdigo atualizado com a ltima verso do Rails. Voc pode utilizar o mtodo freeze!, que por trs das cenas ir executar rake rails:freeze:edge.
Download default.rb

freeze! if yes?("Do you want to freeze Rails?")

Usando o Capistrano
Se voc utiliza Capistrano para fazer deploy de sua aplicao, existe um comando que prepara sua aplicao chamado capify!.
Download default.rb

capify! if yes?("Do you want to use Capistrano?")

Definindo rotas
Se toda vez que voc cria uma nova aplicao altera o arquivo de rotas, o mtodo route pode ajudar. Ele adiciona uma nova entrada ao arquivo config/routes.rb.
Download default.rb

route %(map.root :controller => "welcome") route "map.resources :users"

Executando comandos em diretrios


Para executar comandos em um determinado diretrio existe o mtodo inside, que acessa o diretrio especificado antes de executar o bloco.
inside("vendor") do run "ln -s ~/repos/rails-edge rails" end

Se voc precisa executar algum comando na raz do seu projeto, utilize o mtodo in_root.
in_root { run "rm -rf doc" }

Criando arquivos nos diretrios lib e vendor


Para criar um arquivo no diretrio lib voc deve utilizar o mtodo lib, especificando o nome e contedo do arquivo.
Download default.rb

lib_name = ask("What's your library name? Use something like YourLibraryName") lib "#{lib_name.underscore}/base.rb", <<-TXT module #{lib_name.classify} module Base # put your code here end end TXT

Similarmente, existe um mtodo chamado vendor que faz a mesma coisa no diretrio vendor.
vendor "monkey-patches/init.rb", <<-TXT class Object def not_blank? !blank? end def not_nil? !nil? end end TXT

10

Substituindo textos em arquivos


Um mtodo muito conveniente chamado gsub_file permite substituir textos em arquivos de maneira muito simples. Veja um exemplo de como ativar o filter_parameter_logging automaticamente.
Download default.rb

gsub_file "app/controllers/application_controller.rb", /# *(filter_parameter_logging :password)/sm, '\1'

Adicionando textos a arquivos


Para adicionar um texto qualquer a um arquivo que j existe, utilize o mtodo append_file; mas lembre-se: ele no adiciona quebras de linha.
append_file "environments/test.rb", %(\nconfig.gem "rspec")

11

Copyright 2009 Simples Ideias & Nando Vieira. Todos os direitos reservados. Veja outras publicaes em http://howtocode.com.br.

Vous aimerez peut-être aussi