英文版出處:http://www.padrinorb.com/guides/generators
Padrino提供了用于快速創建應用的生成器,其優勢在于構建推薦的Padrino應用結構、自動生成羅列了所有啟動依賴項的Gemfile并提供幫助菜鳥盡快上手的指南。
生成器一個重要的特點就是它們被從頭建立來支持你的Padrino應用中涉及到的大量工具、類庫和Gems。
也就是說,Padrino生成器并不限制你使用任何數據庫、對象關系映射、測試框架、模板引擎或JavaScript庫。事實上,在生成應用的時候你就可以告訴Padrino你想用哪些組件。
項目生成器
項目生成器的使用方式相當簡單:
$ padrino g project <the_app_name> </path/to/create/app> --<component-name> <value>
而生成基本應用的最簡單的命令莫過于:
$ padrino g project demo_project
該命令在當前目錄的demo_project文件夾下創建一個繼承自Padrino::Application的Padrino應用,該應用已經為您配置好了默認組件。
如果你有特殊需求,則可以按如下設置:
$ padrino g project demo_project -t rspec -e haml -m rr -s jquery -d datamapper -c sass
你也可以指定生成器跳過某個特定的組件(或者采用你自己的):
$ padrino g project demo_project --test none --renderer none
你還可以用 --app 參數為你的核心應用設置別名:
$ padrino g project demo_project --app alternate_app_name # alias -n
新建應用時,生成器用bundler包管理程序來處理依賴程序,當你添加了 --run_bundler參數,生成器會自動執行必要的bundler命令:
$ padrino g project demo_project --run_bundler # alias -b
如果你想手動搞定,那就在生成的應用根目錄里打開終端,執行bundle install命令。
基本項目里面有很多關于如何使用項目生成器的栗子,歡迎來摘哦!
生成器框架是可擴展的,用戶可以很輕易地為其添加組件和工具。
如果你對此感興趣,可以在我們的項目上建立分支,閱讀lin/generators/project.rb里的代碼,并在lib/generators/components里的相關文件里創建指令。我們非常樂意接受第三方組件類型的推送請求(協助維護也求之不得)。
項目生成器的一些有效配置選項:
選項 |
默認值 |
參數 |
介紹 |
bundle | false | -b | 安裝bundler依賴項 |
root | . | -r | 項目根目錄路徑 |
dev | false | none | 從本地git簽出使用邊緣版本 |
app | nil | -n | 指定與項目名不同的應用名 |
tiny | false | -i | 生成微型項目骨架 |
adapter | sqlite | -a | 指定對象關系映射數據庫適配器 |
有效組件及其默認參數設置如下:
選項 |
默認值 |
參數 |
介紹 |
orm | none | -d | mongoid, activerecord, datamapper, couchrest, mongomatic, ohm, ripple, sequel |
test | none | -t | bacon, shoulda, cucumber, testspec, riot, rspec, minitest |
script | none | -s | prototype, rightjs, jquery, mootools, extcore, dojo |
renderer | haml | -e | erb, haml, slim, liquid |
stylesheet | none | -c | sass, less, scss, compass |
mock | none | -m | rr, mocha |
注意:在使用生成器時,項目名、模塊名和控制器名不要重名。比如,不要將你的應用命名為Posts,同時又將你的控制器或者子應用也命名為Posts。
一堆栗子
創建與項目不同名的應用:
$ padrino g my_project -n blog
這將在my_project/路徑下生成項目,并且應用會命名為Blog。
生成帶有mongoid的項目,并自動運行bundler:
$ padrino g project your_project -d mongoid -b
生成帶有riot測試和rr模擬(mocking)的項目:
$ padrino g project your_project -t riot -m rr
生成帶有swquel和mysql的項目:
$ padrino g project your_project -d sequel -a mysql
生成微型項目骨架:
$ padrino g project your_project --tiny
為項目選擇根目錄路徑:
$ padrino g project your_project -r /usr/local/padrino
該指令將在/usr/local/padrino/your_project/下創建新的Padrino項目。
從克隆的git倉庫使用Padrino:
$ padrino g project your_project [--dev] # Use padrino from a git checkout
如果你想了解更多關于搭建開發環境的細節,歡迎訪問The Bleeding Edge!
插件生成器
插件生成器允許用戶基于一個包含了所有必要動作的模板來生成Padrino項目。插件還能夠在現有的Padrino項目中執行。插件生成器額外提供簡單的DSL借助Thor使得生成項目易如反掌!
$ padrino g project my_project --template path/to/my_template.rb
該命令基于提供的模板文件來生成項目,也可以基于URL來生成,比如用一個gist:
$ padrino g project my_project --template http://gist.github.com/356156
你也可以從官方模板倉庫直接執行模板文件:
$ padrino g project my_project --template sampleblog
也可以將模板當成插件應用到Padrino應用:
$ cd path/to/existing/padrino/app
$ padrino g plugin path/to/my_plugin.rb
還可以從官方插件倉庫直接執行插件:
$ cd path/to/existing/padrino/app
$ padrino g plugin hoptoad
通過下面這條命令可以獲得可用插件列表:
$ padrino g plugin --list
基本的模板(插件)文件看起來一般是這樣的節奏:
# my_template.rb project :test => :shoulda, :orm => :activerecord generate :model, "post title:string body:text" generate :controller, "posts get:index get:new post:new" generate :migration, "AddEmailToUser email:string" require_dependencies 'nokogiri' git :init git :add, "." git :commit, "initial commit" inject_into_file "app/models/post.rb","#Hello", :after => "end\n" rake "ar:create ar:migrate" initializer :test, "# Example" app :testapp do generate :controller, "users get:index" end git :add, "." git :commit, "second commit"
記著哦,模板文件都是口味純正的Ruby代碼文件,并且可以訪問所有可用的Thor動作。
控制器生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
app | nil | -n | 指定應用 |
root | . | -r | 指定根目錄路徑 |
destroy | false | -d | 刪除所有生成的文件 |
Padrino為你的應用提供了用于快速生成控制器的生成器。需要注意的是,控制器測試是專門針對由生成應用時選擇的測試框架來生成的。
特別需要注意的是,控制器生成器是根據Padrino約定來開展工作的。
還有比使用控制器生成器更簡單的事嗎:
$ padrino g controller Admin
如果你想為某個特定的子應用創建控制器:
$ padrino g controller Admin -a my_sub_app
也可以為你的控制器添加一個你想要的動作:
$ padrino g controller Admin get:index get:new post:create
控制器生成器將會在app/controllers/admin.rb構建控制器文件并根據生成應用時選擇測試框架在test/controllers/admin_controller_test.rb構建控制器測試文件,還會創建一個默認的路由來映射控制器名和路由名。舉個栗子:
$ padrino g controller User get:index
會生成一條URL路由來將:index映射到/user/index。
假如你把destroy選項的值設置為true,就可以銷毀你創建的控制器。destroy選項的默認值是false——這不廢話嘛~
$ padrino g controller User -d
該命令刪除所有創建的控制器文件。
模塊生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
root | . | -r | 定義根目錄路徑 |
skip_migration | false | -s | 不生成數據遷移 |
destroy | false | -d | 刪除所有生成的文件 |
Padrino提供了用以在應用中快速生成模塊的生成器。需要注意的是,模塊和遷移是根據生成應用時所選的對象關系映射組件和測試框架來專門生成的。
特別需要注意的是,模塊生成器也是根據Padrino約定來開展工作的。如果在現有Padrino應用中使用非Padrino生成的模塊生成器,下場很難設想哦!
還有比使用模塊生成器更簡單的事情嗎:
$ padrino g model User
你也可以在用戶模塊里這是特定的字段:
$ padrino g model User name:string age:integer email:string
模塊生成器會根據你的對象關系映射組件在應用中生成一些文件。
一般會生成下面這些文件:
- 模塊定義文件 [app/models/user.rb]
- 遷移聲明 [db/migrate/xxx_create_users.rb]
- 模塊單元測試文件 [test/models/user_test.rb]
只要學會了如何使用模塊生成器,你想怎么生、想生多少,誰都攔不住!
也可以用destroy選項銷毀你生成的模塊,該參數默認值為false——再廢話,拖出去斬了!
$ padrino g model User -d
該命令將刪除所有模塊文件。【樓主注:準確地說,應該是“刪除所有指定的模塊文件”】
遷移生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
root | . | -r | 指定根目錄路徑 |
destroy | false | -d | 刪除所有生成的文件 |
Padrino提供了可快速修改和操作數據庫模式(Schema)的生成器。
遷移根據創建應用時所選擇的對象關系映射來生成。
需要特別注意的是(呃,又來了),遷移生成器業主要是根據Padrino約定來開展工作。如果你在Padrino應用中使用非Padrino遷移生成器,后果自負哦!
還有比使用遷移生成器更簡單的事情嗎:
$ padrino g migration AddFieldsToUsers
$ padrino g migration RemoveFieldsFromUsers
還可以往遷移文件中添加特定的列:
$ padrino g migration AddFieldsToUsers last_login:datetime crypted_password:string $ padrino g migration RemoveFieldsFromUsers password:string ip_address:string
遷移生成器根據對象關系映射組件在db/migrate/xxx_add_fields_to_users.rb創建遷移文件,并將命令中指定的列包含進去。
通過destroy選項可以刪除遷移文件。該參數默認值為false——又廢話,無語了!
$ padrino g migration AddFieldsToUsers -d
該命令將刪除生成的遷移文件。
郵件發送器生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
app | nil | -n | 指定應用 |
root | . | -r | 指定根目錄路徑 |
destroy | false | -d | 刪除所有生成的文件 |
Parino提供可快速創建新郵件發送器的生成器。
非常值得注意的是,郵件發送器也是根據Padrino約定來開展工作的。
還有比使用郵件發送器生成器更簡單的事情嗎:
$ padrino g mailer UserNotifier
如果你想在子應用中創建郵件發送器:
$ padrino g mailer UserNotifier -a my_sub_app
還可以為郵件發送器添加特定的動作:
$ padrino g mailer UserNotifier confirm_account welcome inactive_account
郵件發送器生成器會在app/mailers/user_notifier.rb中構建郵件發送器。
要刪除所有郵件發送器文件,快用destroy選項,默認值不說了。
$ padrino g mailer UserNotifier -d
該命令將刪除創建的郵件發送器文件。
子應用生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
tiny | false | -i | 生成微型應用骨架 |
root | . | -r | 定義根目錄路徑 |
destroy | false | -d | 刪除所有生成的文件 |
樓主:前面多次提到“子應用”,借問子應用何處有,牧童遙指生成器。
不同于其它土鱉Ruby框架,Padrino主要被設計用來同時掛在多個應用。
首先,你得創建一個項目:
$ padrino g project demo_project
$ cd demo_project
進入demo_project目錄并創建子應用:
$ padrino g app one
$ padrino g app two
默認情況下,這些子應用被掛載在:
- /one
- /two
但是你也可以通過編輯config/apps.rb來做一些改動。
然后創建控制器:
your_project$ padrino g controller base --app foo # 為Foo子應用創建控制器
your_project$ padrino g controller base # 為主應用創建控制器
your_project$ padrino g controller base --app bar # 為Bar子應用創建控制器
或者郵件發送器:
your_project$ padrino g mailer registration --app foo # 為Foo子應用創建郵件發送器
your_project$ padrino g mailer registration # 為主應用創建郵件發送器
your_project$ padrino g mailer registration --app bar # 為Bar子應用創建郵件發送器
微型骨架生成器
項目生成器和子應用生成器都用來生成更小的項目骨架。相比于默認骨架,“微型”選項可以移除掉控制器、幫助程序和郵件發送器需要的文件夾,并且在其位置生成controllers.rb、helpers.rb和mailers.rb文件。
使用微型骨架生成器來創建項目:
$ padrino g project tiny_app -d mongoid --tiny
或者在已有的項目中用微型骨架生成器創建子應用:
my_app$ padrino g app tiny_app --tiny
管理生成器
選項 |
默認值 |
參數 |
介紹 |
---|---|---|---|
name | nil | -a | 指定管理應用的名稱 |
root | . | -r | 指定根目錄路徑 |
theme | default | none | 生成帶主題的管理應用 |
skip_migration | false | -s | 不生成遷移 |
destroy | false | -d | 刪除所有生成的文件 |
Padrino附帶了一個內建的管理面板,還有比生成管理應用更簡單的事情嗎:
$ padrino g admin
可以在生成管理應用的時候就給它指定主題:
$ padrino g admin --theme blue
可用的主題有:amro, bec, bec-green, blue, default, djime-cerulean, kathleene, olive, orange, reidb-greenish, ruby, warehouse
這將生成管理應用并將其掛載在/admin,如果你想更加深入地了解管理應用,歡迎閱讀《管理指南》。
文章列表