英文版出处: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. swift学习之UI控件(一)

    // //  ViewController.swift //  test // //  Created by chuangqu on 15/7/23. //  Copyright (c) 2015年 ...

  2. 用GCD线程组与GCD信号量将异步线程转换为同步线程

    有时候我们会碰到这样子的一种情形: 同时获取两个网络请求的数据,但是网络请求是异步的,我们需要获取到两个网络请求的数据之后才能够进行下一步的操作,这个时候,就是线程组与信号量的用武之地了. #impo ...

  3. SAE上传文件到storage

    还有什么比代码更清晰的讲解 html代码: 一定需要下面这个: method="post" enctype="multipart/form-data" < ...

  4. JMS(Java消息服务)入门教程

    什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...

  5. CentOS 6.3下MySQL 5.6源码安装

    Linux操作系统:CentOS 6.3 1:下载:当前mysql版本到了5.6.10 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downl ...

  6. 获取session、request、parmeter的方法

    package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public ...

  7. python基础(一)

    简单的‘Hello World!’ Python命令行 假设你已经安装好了Python, 那么在Linux命令行输入: $python 将直接进入python.然后在命令行提示符>>> ...

  8. 使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)

    1.查询待导出表Ad中的数据. SELECT * FROM [DB_Temp].[dbo].[Ad] 2.编写存储过程. --将表数据生成SQL脚本的存储过程 CREATE PROCEDURE dbo ...

  9. Xamarin Android中引用Jar包的方法

    新建一个Java Bingdings Library 将Jar包复制,或使用添加已存在的文件,到Jars文件夹中 确认属性中的“生成操作” 如果有类型转换不正确,请修改Transforms文件夹中的相 ...

  10. Device ehth0 is not present

    context: 使用virtualbox 克隆了一个新硬盘,然后配为新建虚机的使用,但ifconfig只能发现lo,没有eth0 解决方案: 当前系统是centos6.6 cd /etc/udev/ ...