歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Padrino 博客開發示例

Padrino 博客開發示例

日期:2017/3/1 9:54:34   编辑:Linux編程

樓主按

拿作者自己的話說: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

現在,我們已經從終端中進入到項目文件目錄了,讓我們更近距離地看一下這些可愛的文件吧:

  • Gemfile:確保項目所有gem包依賴項都包含在該文件中!
  • app/app.rb:核心應用程序主要配置文件;
  • config/apps.rb:該文件定義項目要掛載的應用;
  • config/database.rb:顧名思義,定義數據庫適配器信息。

除此之外,還生成了一些重要的目錄:

  • app/controllers:聲明Padrino的路由定義;
  • app/helpers:定義應用的幫助方法;
  • app/views:包含由控制器輸出的模板視圖;
  • lib:包含項目用到的所有擴展、類庫和其它代碼;
  • public:保存圖片、樣式和JavaScript代碼文件;
  • test:保存模型和控制器的測試代碼;

現在,我們來檢查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應用服務器的時候了!用內建的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

Copyright © Linux教程網 All Rights Reserved