The Plugin Generator allows you to create Padrino projects based on a template file that contains all the necessary actions needed to create the project. Plugins can also be executed within an existing Padrino application. The plugin generator provides a simple DSL in addition with leveraging Thor to make generating projects a breeze!

$ padrino g project my_project --template path/to/my_template.rb

This will generate a project based on the template file provided. You can also generate a project based on a remote url such as a gist for an additional level of convenience:

$ padrino g project my_project --template

You can also execute template files directly from the official templates repo:

$ padrino g project my_project --template sampleblog

You can also apply templates as plugins to existing Padrino applications:

$ cd path/to/existing/padrino/app
$ padrino g plugin path/to/my_plugin.rb

You can also execute plugin files directly from the official plugins repo:

$ cd path/to/existing/padrino/app
$ padrino g plugin hoptoad

You can even get a list of available plugins with the following command:

$ padrino g plugin --list

A simple template (plugin) file might look like this:

# my_template.rb

project :test => :rspec, :orm => :activerecord
generate 'model', 'account username:string password:string'
generate 'model', 'post title:string body:text'
generate 'controller', 'posts get:index get:new post:new'
generate 'controller', 'users get:index'
generate 'migration', 'AddEmailToAccount email:string'
require_dependencies 'nokogiri'

git :init
git :add, "."
git :commit, "-m 'initial commit'"

inject_into_file 'app/models/post.rb','#Hello', :after => "end\n"
rake 'ar:create ar:migrate'
initializer :test, '# Example'

git :add, '.'
git :commit, "- m 'second commit'"

Keep in mind that the template file is pure Ruby and has full access to all available thor actions.

last updated: 2022-02-22

comments powered by Disqus