英文版出处: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

可用的主题有:amrobecbec-greenbluedefaultdjime-ceruleankathleeneoliveorangereidb-greenishrubywarehouse

这将生成管理应用并将其挂载在/admin,如果你想更加深入地了解管理应用,欢迎阅读《管理指南》

Padrino 生成器指南的更多相关文章

  1. Padrino 博客开发示例

    英文版出处:http://www.padrinorb.com/guides/blog-tutorial 楼主按 拿作者自己的话说:Padrino(谐音:派骓诺)是一款基于Sinatra的优雅的Web应 ...

  2. vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器

    vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器SSR 完全指南https://cn.vuejs.org/v2/guide/ssr.html在 2.3 发布后我们发布了一份完 ...

  3. OpenAI的GPT-2:用Python构建世界上最先进的文本生成器的简单指南

    介绍 "The world's best economies are directly linked to a culture of encouragement and positive f ...

  4. 【翻译】Fluent NHibernate介绍和入门指南

    英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...

  5. 编写自定义Yeoman生成器

    转载自JSCON-简时空:<自定义Yeoman生成器> 1.Getting Started 1.1.设置Node模块 Yeoman提供了generator-generator方便快速编写自 ...

  6. DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等

    DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...

  7. iBatis.net入门指南

    iBatis.net入门指南    - 1 - 什么是iBatis.net ?    - 3 - iBatis.net的原理    - 3 - 新人指路    - 3 - iBatis.net的优缺点 ...

  8. 【sinatra】结合Padrino framework

    用Sinatra来做复杂的Web应用时,会出现若干个比较麻烦的点. 要手工作成一个个的应用骨架.作成test .view.public目录等等 将Sinatra DSL集中在一个类中的话,画面数量增加 ...

  9. JMeter使用指南--转

    JMeter使用指南 本文重点介绍JMeter工具在测试中地位以及其中一些难以理解或者手册中含糊不清的感念,读者可以通过本文了解这些概念,然后再根据自己的需要查阅JMeter中各个组件的具体用法来完成 ...

随机推荐

  1. 【读书笔记】iOS-ARC-不要向已经释放的对象发送消息

    一,在AppDelegate.m中写入如下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...

  2. Java 引用

    Java 对象的引用方式有如下四种,这四种方式主要是为了给垃圾回收提供更灵活的操作: 1.强引用,最常见的引用方式,当一个对象被一个或一个以上的引用变量引用时,它处于可达状态,这时不会被垃圾回收器回收 ...

  3. mac os下可能是最好的豆瓣电台——diumoo

    由于我一直用豆瓣fm听音乐,在网上找了下豆瓣的相关应用,都感觉不是太好, 最后发现一个mac版的app--diumoo! 这个软件看着非常舒服,一点也不占桌面空间,它一直默默在桌面右上角,鼠标划上去会 ...

  4. DOTA2参数收集

    -language schinese 显示中文界面(使用英文语音的同学使用) -perfectworld 登陆国服(Steam平台) -novid 不显示启动动画

  5. asp.net开发中常见公共捕获异常方式总结(附源码)

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  6. Cookie/Session机制

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  7. WCF绑定和行为在普通应用和SilverLight应用一些对比

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 绑定 普通应用和SilverLight应用区别 本文版权归mephisto和博客园共有, ...

  8. 烂泥:CentOS6.5光盘以及ISO镜像文件的使用

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 学习CentOS有一段时间了,在平时使用过程中.系统镜像以及光盘使用的比较多,这篇文章就从实用的角度介绍相关有关光盘与镜像文件的使用. 因为物理机相关的 ...

  9. 随笔:近期仍在流行的QQ盗号网页简析

    前言:被盗号的人们,你们的防护意识有那么弱吗? 声明:本文提到的技术,仅可用作网络安全加固等合法正当目的.本文作者无法鉴别判断读者阅读本文的真实目的,敬请读者在本国法律所允许范围内阅读本文,读者一旦因 ...

  10. plain framework 1 参考手册 入门指引之 模块

    模块 总述 基础 数据库 引擎 事件 文件 网络 性能 脚本 系统 工具 总述 上图为plain framework(简称简约框架)所有的模块,包括基础.数据库.引擎.事件.文件.网络.性能.脚本.系 ...