rails3中的engine 比較強大,現在寫gem, 可以以 engine為基礎構建。而且慢慢地可以把rails程式分模組拆分。rails 3.1中更可以把engine以rake的方式載入。。比如
建立乙個engine, 有個 gem可讓我們的工作更加方便[url=
事先安裝好enginex
sudo gem install enginex
1.建立基本框架並以rspec做為測試:
enginex cms -t rspec
enginex會為我們建立好乙個engine的框架。
2.建立所需要的目錄
由於我自己測試寫的就不怎麼樣,所以這裡跳過寫測試部分,就不按 bdd流程來了。主要實現engine的功能
3.建立乙個model--post(這裡是基於acciverecord,如果用mongoid,就更簡單些,就不用管migration了)
4.建立 controller..(layout "cms"這裡是使engine使用自己的布局)
新增curd
5.建立layout ---cms.html.erb
新增**:
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#" %>
<% end %>
<%= yield %>
6.建立所需的js,和 css,到public資料夾,
style.css簡單寫點
h1
9.修改lib/cms.rb
require "cms/engine"
10.新增config/routes.rb
11.因為使用的active_record,所以我們要使用migration,建立乙個generator,複製migration檔案 lib/generators/cms/install_generator.rb
module cms
class installgenerator < rails::generators::base
include rails::generators::migration
source_root file.expand_path('../templates', __file__)
desc "copies migration to main project"
def self.next_migration_number(dirname)
if activerecord::base.timestamped_migrations
time.now.utc.strftime("%y%m%d%h%m%s")
else
"%.3d" % (current_migration_number(dirname) + 1)
endend
def copy_migration
migration_template "create_posts.rb", "db/migrate/create_posts.rb"
endend
end
12...現在,新建立乙個migration檔案到lib/generators/cms/templates/create_posts.rb
class createposts < activerecord::migration
def self.up
create_table :posts do |t|
t.string :title
t.text :body
t.timestamps
endend
def self.down
drop_table :posts
endend
這樣,我們就可以通過rails g cms:install 進行migration檔案的複製了
13. 打包成gem,要先悠 rakefile, 新增要打包的目錄,預設只有 lib目錄
然後在終端rake gem生成 cms.gem在pkg目錄下,安裝pkg目錄下的 gem 既可
14.要使用這個gem,只要新建工程,rails new test ,修改 gemfile,新增
gem "cms"
然後
rm public/index.html
rails g cms:index
rake db:migrate
rails s
開啟瀏覽器,loclhost:3000 就可以看到post頁面,並且使用的css是 gem 自身的。
-------暫時寫到這,public 資源,只有在 gem 下有用,想要在plugin 狀態下也有用,要在cms根目錄下建立乙個init.rb,然後加上
config.middleware.use ::actiondispatch::static, "#/public"
mark:::
Rails3 入門之三 新建乙個rails工程
如果你按照這個嚮導,你將會新建乙個rails工程叫blog,乙個非常簡單的webblog。在你開始新建乙個rails工程之前,請確保你是否安裝了rails.例子裡面使用 和 來表示終端的提示符。如果你使用windows,你的終端提示符 應該是像這樣的 c source code3.1 安裝rails...
Rails3入門之十一 建立乙個多模型的form
你的blog還有乙個功能是給部落格加上tag。需要實現這個功能的話需要你在乙個form中實現多個模型的互動。rails支援巢狀的form。為了實現這些,我們將新增每個post多個tag。當你新建post時候,可以有多個tag。首先我們增加tag模型。rails generate model tag ...
建立乙個沒有資料庫的rails專案
方法一 建立的時候,跳過建立資料庫,跳過bundle等等。什麼都沒有,自己寫專案的時候,自己再做,乙個真正乾乾淨淨,從零開始的專案。rails new skip active record skip bundle skip yarn skip spring skip listen 專案名 記得改變g...