程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 建立一個典型的Ruby On Rails網站(四)

建立一個典型的Ruby On Rails網站(四)

編輯:關於JAVA

緩存和頁面顯示,這是最後一個部分了,真沒想到一個連載竟然用了幾個小時。累了...

外部鏈接和跟蹤

如果想對外部網站資源進行鏈接和跟蹤,可以使用如下的helper方法:

Ruby代碼

  external_link_to(text,url)
  external_link_to(image_tag(image),url)

這兩種生成鏈接的方法(一種是文字鏈接,一種是圖形鏈接)都可以對鏈接情況進行日志記錄。如果將environment.rb文件中的$USE_EXTERNAL_LINK_POPUPS 參數設置為真,外鏈接將一彈出框形式存在。下面的參數可以傳遞給Url

Ruby代碼

  :new_window=>true or false -- determines if link appears in new browser window (defaults to true)
  :show_only_if_link=>true or false -- determines if image or text is shown if no URL was supplied (defaults to false)
  :show_link_icon=>true or false -- determines if the external icon image is shown after the link (defaults to true for text links and false for image links)

對於圖形,可以傳遞如下參數:

Ruby代碼

  :alt=>'value' -- alt tag is set with the value passed
  :title=>'value' -- title tag is set with the value passed

對於當前來說,還沒有提供對外部鏈接跟蹤情況的報表。所有的鏈接跟蹤情況通過 "external_link_logs" 數據庫進行存儲。

部分緩存機制

部分緩存功能需要配置文件設置,才能啟用(config/production.rb)並且要打開存儲機制

如下:

Ruby代碼

   
  config.cache_store = :mem_cache_store, '10.0.0.1:11211', '10.0.0.2:11211'

緩存設置如下:

Ruby代碼

 config.action_controller.perform_caching = true

靜態頁面首先將被緩存。主頁面的緩存周期是一個小時。或者通過  config/environment.rb文件的 $CACHE_CLEAR_IN_HOURS 參數定義

頭文件和導航欄的緩存通過動態的部分緩存,當改變的時候進行清除。

搜索功能的緩存,依賴與檢索類序,語言,和是否有審查的狀態,進行緩存。

當用戶用管理員或內容合伙人登錄的時候,頁面將不進行緩存。

進行緩存的項目如下:

Ruby代碼

- taxon_id
- language
- expertise level
- vetted or all information
- default taxonomic browser
- curator for page

頁面緩存的過期,可以通過手動或服務器定時調用如下地址實現:  They only work if called

Ruby代碼

  localhost:3000/expire_all    # expire all non-species pages
  localhost:3000/expire_taxon/TAXON_ID  # expire specified taxon ID (and it's ancestors)
  localhost:3000/expire_taxa/?taxa_ids=ID1,ID2,ID3 # will expire a list of taxon IDs (and their unique ancestors) specified in the querystring (or post) parameter "taxa_ids" (separate by commas)
  localhost:3000/clear_caches # expire all fragment caches (if supported by data store mechanism)

對於應用程序內容,可以通過如下方法調用實現。

Ruby代碼

  expire_all   # expire all non-species pages
  expire_taxon(taxon_ID)  # expire specified taxon id and ancestors (unless :expire_ancestors=>false is set)
  expire_taxa(taxon_ID_array)# expire specified array of taxon ID and unique ancestors (unless :expire_ancestors=>false is set)
  clear_all_caches # expire all fragment caches (everything!)

頁面顯示插件ASSETT PACKAGER

(CSS and JS)

asset_packager 插件的詳細介紹, 可以參考 http://synthesis.sbecker.net/pages/asset_packager

如果你想在自己項目中引入一個javascript文件,那麼你需要編輯"config/asset_packager.yml"文件 並且需要按照加載的順序放置。項目通過一個Rake任務對Css和Js文件管理和組合需要指出的是,在config文件中Js文件的順序要和組合時的順序一致。

當更新Js/Css代碼後,要通過rake 任務進行更新。

如下:

Ruby代碼

  rake asset:packager:build_all

在產品模式下,這個rake命令是做為capistrano部署命令的一部分。

做為測試目的,你也可以強制在config/environments/development.rb" 或 "config/environment.rb"中增加

Ruby代碼

  Synthesis::AssetPackage.merge_environments = ["development", "production"]

控制台屬性

1. 通過ConceptID看屬性

Ruby代碼

     t=TaxonConcept.find(101)

2. 查詢等級

Ruby代碼

     he_all=t.hierarchy_entries  OR  he=t.entry (for the default)

3. 查詢相關等級

Ruby代碼

      h=he_all[0].hierarchy #   OR  h=he.hierarcy
      h.label
      h.agent.full_name
      h.agent.hompage
      h.agent.logo_cache_url

4. 查詢相關等級的agents

Ruby代碼

agents=he[0].agents  # OR  agents=he.agents
        agents.each {|agent| puts agent.full_name + " " + agent.homepage + " " + agent.logo_cache_url}

文檔

項目並不是通過svn repo來產生文檔。所以,用戶需要如下得到:

Ruby代碼

  template=`allison --path` rake doc:reapp

寫在最後:

終於寫完了,還是比較有收獲的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved