拿作者自己的話說:Padrino(諧音:派骓諾)是一款基於Sinatra的優雅的Web應用開發框架,旨在使Web應用的開發變得輕松有趣。
Padrino 的詳細介紹:請點這裡
Padrino 的下載地址:請點這裡
樓主主要是在一台二手筆記本上跑Linux、體驗Padrino並對原文進行翻譯的。Ruby領域推薦平台是OS X,其次是Linux,如果你對Linux環境感興趣,可以參考我的配置信息(見下圖)。
每當我看見天邊的綠洲全新的框架,就會想起東方奇諾瓦如何搭博客。我覺得這是讓新人迅速上手的最佳方式。本指南將向大家展示如何利用Padrino框架搭建簡易博客。在這個過程中,我們將對每一步進行詳細的介紹並提供不同相關主題的鏈接以方便大家學以致用。
如果你沒功夫跟我磨叽,給你指條道兒,直接從GitHub下載全部示例代碼:
$ git clone git://github.com/padrino/sample_blog.git
或執行博客指導項目模板,它能夠利用模板生成器一步一步地自動建立起博客項目:
$ padrino g project sample_blog --template sampleblog
點擊這裡了解模板生成器的詳細信息。
俗話說:木有蛋/雞,何來雞/蛋?為了開發Padrino應用,我們得先有點兒准備吧。顯然,我們得先把Ruby和RubyGems裝了;然後,再來安裝Padrino框架:
$ gem install padrino
點擊這裡了解關於安裝的詳細信息。安裝流程一旦完成,所有必需的依賴項也都自動准備就緒,我們現在就可以開始開發自己的博客了。
原湯化原食。創建Padrino程序的最佳方式采用Padrino生成器。類似於Rails,Padrino也有一個用來創建包含項目所有必備程序和資源的生成器。Padrino是一個混合型框架(agnostic framework)並支持大量不同的模板、測試、JavaScript和數據庫組件。推薦閱讀《生成器指南》來獲取更詳細信息。
就這個示例程序而言,我們將采用ActiveRecord ORM、Haml模板語言、Shoulda測試框架和jQuery類庫。基於這些考慮,我們現在來創建這個新項目:
$ padrino g project sample_blog -t shoulda -e haml -c sass -s jquery -d activerecord -b
這行命令將為我們生成Padrino項目的基礎文件並打印出生成報告。可以從這裡查看這條生成命令的輸出信息示例。需要注意的是,-b參數自動指引bundler安裝相關的依賴項。現在我們進入新項目文件夾:
$ cd sample_blog
現在,我們已經從終端中進入到項目文件目錄了,讓我們更近距離地看一下這些可愛的文件吧:
除此之外,還生成了一些重要的目錄:
現在,我們來檢查config/database.rb文件以確保數據庫連接配置是正確的。截至目前,默認配置對於示例指導來說是可用的。項目將采用存儲在db/sample_blog_development.db中Sqlite3數據庫。
我們再創建一些簡單的路由來演示Padrino的路由系統。進入app/app.rb文件並輸入:
# app/app.rb class SampleBlog::App register Padrino::Rendering register Padrino::Helpers # Add these routes below to the app file... get "/" do "Hello World!" end get :about, :map => '/about_us' do render :haml, "%p Padrino 博客開發示例" end end
可以看到:第一條路由創建一個字符用來返回應用的根URL;第二條路由將"/about_us"顯式映射到由Haml輸出的“關於”頁面;符號:about用來引用這條路由。
強烈建議親查看《控制器指南》來對路由系統有一個綜合的了解喲!
接下來,為了方便對項目中的數據進行增刪改查,我們來建立Padrino後台管理面板。在終端程序中輸入:
sample_blog $ padrino g admin sample_blog $ bundle install
這兩行命令將為項目建立管理子程序,並在config/apps.rb文件中聲明對自己的掛載。通過這裡可以查看該命令的輸出結果。
然後,輸入下面的指令來創建數據庫、運行遷移並運行db/seeds.rb裡的種子(seed)任務:
sample_blog $ padrino rake ar:create sample_blog $ padrino rake ar:migrate sample_blog $ padrino rake seed
在這個過程中,系統將提示你輸入登錄管理系統所用的電子郵箱和密碼。
如果你想要了解更多關於管理面板的功能和特性,歡迎閱讀《管理面板指南》。
Padrino項目建立了、數據庫也配置了、管理系統也搭好了,輪到啟動Padrino應用服務器的時候了!用內建的Padrino任務來做其實非常簡單,只要在終端裡執行下面這條命令:
sample_blog $ padrino start
不出意外你應該從終端看到如下輸出:
=> Located unlocked Gemfile for development => Padrino/0.10.2 has taken the stage development on port 3000 >> Thin web server (v1.2.7 codename This Is Not A Web Server) >> Maximum connections set to 1024 >> Listening on localhost:3000, CTRL+C to stop
要想了解操作Padrino的終端命令,那就閱讀《開發與終端命令》指南。
你的程序現在已經在http://localhost:3000(樓主:Mac和Linux用戶可以無比優越地直接簡寫為0:3000)恭候你的大駕光臨了。在浏覽器中訪問該網址,你可以看到著名的“Hello World!”我們還可以通過下面這行網址進入管理界面:
http://localhost:3000/admin
當然需要登錄啰,還記得在執行rake seed命令時寫的登錄郵箱和密碼吧。登錄後,你可以盡情探索Padrino的後台管理功能,不過我們將晚一點兒再來介紹更詳細的信息。如果你想獲取更多關於這方面的資料,可以閱讀《管理面板指南》。
順便說一下,Padrino在開發模式中完全支持代碼重裝。啥,你問這是啥?這就是說你可以讓Padrino服務器一邊跑一邊修改源代碼,只需要刷新一下浏覽器,光彩立現!建議你專門開一個終端程序來跑Padrino服務器程序。
好,程序OK了、布局也定好了,現在我們來實現創建和展示博文的功能。
首先在應用目錄中生成模型。和版本0.10.0一樣,模型將默認生成到項目的models目錄下。如果你覺得不爽,可以用-a參數來自定義你想要存儲模型的子目錄。
sample_blog $ padrino g model post title:string body:text -a app => Located unlocked Gemfile for development create app/models/post.rb create test/models/post_test.rb create db/migrate/002_create_posts.rb
然後在遷移中給博文模型增加一個時間戳:
# db/migrate/002_create_posts.rb class CreatePosts < ActiveRecord::Migration def self.up create_table :posts do |t| t.string :title t.text :body t.timestamps end end def self.down drop_table :posts end end
然後遷移到數據庫:
sample_blog $ padrino rake ar:migrate => Executing Rake ar:migrate ... == CreatePosts: migrating ==================================================== -- create_table("posts", {}) == CreatePosts: migrated (0.0016s) ===========================================
博文模型便創建好了。然後來創建提供基本展示功能的控制器:
sample_blog $ padrino g controller posts get:index get:show => Located unlocked Gemfile for development create app/controllers/posts.rb create app/helpers/posts_helper.rb create app/views/posts create test/controllers/posts_controller_test.rb
我們再來添加一些標准路由到控制器裡面,比如:index和:show神馬的:
# app/controllers/posts.rb SampleBlog.controllers :posts do get :index do @posts = Post.all(:order => 'created_at desc') render 'posts/index' end get :show, :with => :id do @post = Post.find_by_id(params[:id]) render 'posts/show' end end
上面這個控制器定義了可以通過我們的應用來訪問的路由。聲明以Http方法get開始,接上一個符號表示動作(Action),放置在一個保存了獲取必要對象的變量以及輸出視圖模板的代碼塊當中。看上去跟Rails和Sinatra沒啥兩樣,是吧?(博主:好像是吧……)
下一步,為index和show控制器動作分別創建視圖:
# app/views/posts/index.haml - @title = "Welcome" #posts= partial 'posts/post', :collection => @posts
# app/views/posts/_post.haml .post .title= link_to post.title, url_for(:posts, :show, :id => post) .date= time_ago_in_words(post.created_at || Time.now) + '以前' .body= simple_format(post.body)
# app/views/posts/show.haml - @title = @post.title #show .post .title= @post.title .date= time_ago_in_words(@post.created_at || Time.now) + '以前' .body= simple_format(@post.body) %p= link_to '顯式全部博文', url_for(:posts, :index)
Padrino管理系統使得數據記錄的增刪改查相當簡便自動。通過Padrino管理系統管理博文,只需輸入下面這行命令:
sample_blog $ padrino g admin_page post => Located unlocked Gemfile for development create admin/controllers/posts.rb create admin/views/posts/_form.haml create admin/views/posts/edit.haml create admin/views/posts/index.haml create admin/views/posts/new.haml inject admin/app.rb
你沒關Padrino服務器吧(CTRL + C)?沒關就好,來看看管理界面。
用你之前輸入的郵箱和密碼登錄http://localhost:3000/admin。
你可以看到有兩個Tab,一個是博文,另一個是賬戶。點擊博文那個分頁。
只需輕輕點擊一下“New”,你便可以開始創建新的記錄,頁面會羅列出你先前在創建博文模型時設置的所有字段。
注意:確保在創建模型和遷移後運行padrino g admin_page命令。
現在你已經通過管理界面添加了一些博文,訪問http://localhost:3000/posts並注意到你創建的博文都會在index動作中顯示出來。
你可以通過padrino rake routes命令來顯示當前所有定義過的路由:
$ padrino rake routes URL REQUEST PATH (:about) GET /about_us (:posts, :index) GET /posts (:posts, :show) GET /posts/show/:id
這對理解控制器和url之間的映射關系很有幫助哦!
更為詳細介紹見 http://www.linuxidc.com/Linux/2013-07/88112p2.htm