建立乙個rails3 engine

2021-08-25 10:33:00 字數 2726 閱讀 7092

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...