`
darkbaby123
  • 浏览: 104074 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用Rails的template避免重复劳动

阅读更多

说起来这个template功能在 Rails 2 时代就已经存在了。所以这并不算什么新鲜玩意。可惜我当时没关注,后来更是忘得精光。今天看了一篇别人的博客才发现这就是我一直想找的东西。

 

你是否觉得初始化每个Rails项目时都要做一些重复的工作?比如在Gemfile中加入常用的gem,用jQuery替换Prototype,跑一些generator……等等。Rails template 可以让你用代码完成这些重复工作。

 

说明:本人开发环境是Rails 3.0.4,所以以下的命令都是Rails 3的。

 

比如你把自己要做的事情用DSL写在一个文件里(内容随便写的):

 

# File path
# ~/rails_template.rb

gem 'jquery-rails'
gem 'rspec', :group => :test

run "bundle install"

generate :scaffold, "User name:string"
rake "db:migrate"

 

代码意图很清晰,不会有哪个搞Rails的看不懂吧……

然后在新建一个项目(就叫your_app吧)时,用 -m 参数引用这个文件路径:

 

rails new your_app -JT -m ~/rails_template.rb

 

Rails在初始化项目完成后,就会执行脚本中的内容。是不是很酷呢?

 

其实Rails template只是提供一套平易近人的API来让你描述一些日常工作。而且它并不仅仅只能在项目初始化的时候使用,也可以对一个已经存在的Rails项目使用。你只需要执行rails:template任务并把文件路径传给LOCATION参数即可:

 

rake rails:template LOCATION=~/rails_template.rb

 

这样一来你完全可以把日常任务放到各种不同的Rails template里面,根据不同的情况使用。或者给一个Rails项目应用多个不同的template。Don't Repeat Yourself !

 

按照俺的习惯,本文同样只是介绍这么个玩意给没用过的developers。毕竟我也是在学习,而且没必要重复别人的东西,不是么?(尤其是当别人已经写的很好时)。 如果想看更详细的东西,你可以在下面两篇文章中找到答案(推荐先看第一篇):

 

我的Rails 3 App Template (+jQuery + RSpec + Watchr)

这篇文章可以算是Rails template的“最佳实践”了,里面目录结构的设计值得学习。而且从template文件中你可以找到大部分你想要的API,比如替换config/application.rb配置文件中的某一行,把新的配置增量写入一个文件……而且这些API在Rails API中还查不到……如果谁找到了,可以告诉我一声。

 

Rails templates

Rails template提供的一些API的介绍,比 Rails API 上的要详细一点点。

 

最后贴一份我自己的Rails template,仿造第一篇文章写的。我用它来初始化一些测试项目:

 

这是Rails template

 

# File path:
# ~/shared_scripts/rails_template/rails3.rb
# 
# How to use:
#   rails new your_app -TJ -m ~/shared_scripts/rails_template/rails3.rb

# Use customized Gemfile instead of the auto-generated Gemfile
# Customized Gemfile is in ~/shared_scripts/rails_template/
run "mv Gemfile Gemfile.old"
file 'Gemfile', File.read("#{File.dirname(rails_template)}/Gemfile")

run "bundle install"

generate 'rspec:install'
generate 'jquery:install'
# For coffee script
generate 'barista:install'

# Create dir for coffee script and sass
run "mkdir app/coffeescripts"
run "mkdir public/stylesheets/sass"

# Setting jquery
gsub_file 'config/application.rb', /(config.action_view.javascript_expansions.*)/,
                                   "config.action_view.javascript_expansions[:defaults] = %w(jquery rails)"

# Keep tmp and log directory
run "touch tmp/.gitkeep"
run "touch log/.gitkeep"

# Create scaffold if needed
if yes?("Do you want to generate a scaffold ?")
  params = ask("Enter scaffold: ")
  generate :scaffold, params
  rake "db:migrate"
end

 

这是Gemfile

 

# File path:
# ~/shared_scripts/rails_template/Gemfile

source 'http://rubygems.org'

gem 'rails', '3.0.4'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'
# PostgreSQL adapter
# gem 'pg'

gem 'jquery-rails'
gem 'haml'
gem 'haml-rails'
gem 'json'
gem 'barista'

# Must apply rspec in development env, or the generators will generate test_unit files instead of rspec ones
group :development, :test do
  gem 'rspec'
  gem 'rspec-rails'
end

# AR finder
# gem 'meta_where'

# Paginator
# gem 'kaminari'

# HTML5 offline app
# gem 'rack-offline'
 
1
3
分享到:
评论

相关推荐

    rails-template:适用于高级Rails开发人员的最佳,最新和最快的Rails 6.x模板

    dao42 / rails-template dao42 / rails-template支持最新的rails 6.0.0项目设置 也许是高级Rails开发人员的最佳,最新和最快的Rails模板。 这可能是您新的Rails项目的... dao42/rails-template使用webpacker并删除a

    (Unity源码)街机外星风格射击游戏源码On Rails Shooter Template 1.20.rar

    2-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏...

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板.zip

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...

    rails-template:我们的 Rails 模板

    rails-template Our Ra​​ils template ...request.fullpath注意事项gem ransack 不能使用start, order, type, date 等key,所以要避免order_date, start_time, end_time, xxxtype 等栏位命名方式,否则后台搜寻会失效

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    2. **代码简洁**:Rails遵循“约定优于配置”的原则,这意味着开发者无需编写大量重复代码就能实现常见的功能需求。 3. **社区活跃**:Rails拥有庞大的开发者社区,提供了丰富的插件和教程资源,遇到问题时可以迅速...

    使用Aptana+Rails开发Rails Web应用(中文)

    本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana Studio。你可以从其官方网站下载最新版本的安装包。安装过程中,遵循提示进行,确保选择自定义安装并勾选...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留Rails的便捷开发体验。 ### 2. 安装`GoOnRails` 首先,确保你的系统已经安装了Rails和Go。接下来,...

    Rails 101 入门电子书

    - 安装Rails: 使用gem工具安装最新的Rails版本。 - 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: -...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Rails3 使用rake启动后台任务

    以下是一些关于如何在 Rails3 中使用 rake 启动后台任务的知识点: 1. **Rakefile**: 每个 Rails 项目都有一个 Rakefile 文件,这是 Rake 执行任务的入口点。在这个文件中,你可以定义自定义的任务。 2. **Task ...

    使用RSpec 测试Rails 程序.pdf

    ### 使用RSpec 测试Rails 程序的知识点总结 #### 一、RSpec与Rails结合的基础概念 **RSpec**(RSpec is not a unit testing framework)是一种为Ruby编程语言设计的行为驱动开发(BDD)框架,而**Rails**是基于...

    Ruby on Rails实例开发

    Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于ORM(对象关系映射),ActionController处理HTTP请求,以及Action...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    rails本地安装包完整版

    Rails是Ruby编程语言的一个著名框架,用于开发Web应用程序。它以MVC(模型-视图-控制器)架构模式为基础,提供了许多内置功能,使开发者能够更...通过这种方式,开发者可以立即开始使用Rails进行Web应用的开发工作。

    rails2-sample

    例如,Rails的路由系统是如何工作的,以及如何使用Rails进行RESTful API的开发。这些知识对于深入理解和优化Rails应用至关重要。 #### 5. Models, Views, and Controllers(模型、视图和控制器) MVC是Rails的核心...

    关于rails 3.1 cucumber-rails 1.2.0

    Cucumber-Rails集成了Cucumber与Rails,使得开发者能够在Rails环境中方便地使用Cucumber进行功能测试。 在 Rails 应用中使用 Cucumber-Rails,开发者可以创建一个名为`features`的目录,里面包含这些Gherkin特性...

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    Rails 101S

    - **代码优化**:使用`before_action`等技术来减少重复代码,提高代码可维护性。 #### 使用者功能与延伸应用 - **加入用户认证功能**:增加用户注册、登录、注销等基础功能。 - **扩展用户资料**:在用户模型中...

Global site tag (gtag.js) - Google Analytics