Académique Documents
Professionnel Documents
Culture Documents
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.
: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
Para salvar uma URL qualquer como arquivo, basta utilizar o mtodo open.
1. Source Code Management 3
Download default.rb
Voc no precisa se preocupar em criar o diretrio antes; caso ele no exista, ser criado automaticamente.
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
generate :rspec
Voc tambm pode passar argumentos para sua tarefa, como em um exemplo de scaffolding.
generate :scaffold, "user", "name:string", "email:string"
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
rake "bootstrap:init"
Se voc precisar executar uma tarefa em um ambiente especfico, pode utilizar a opo :env.
rake "db:migrate", :env => "test"
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"
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")
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
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
Se voc precisa executar algum comando na raz do seu projeto, utilize o mtodo in_root.
in_root { run "rm -rf doc" }
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
11
Copyright 2009 Simples Ideias & Nando Vieira. Todos os direitos reservados. Veja outras publicaes em http://howtocode.com.br.