91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為Web開發提供的10個Ruby on Rails Gems有哪些

發布時間:2021-09-18 09:20:08 來源:億速云 閱讀:194 作者:柒染 欄目:web開發

今天就跟大家聊聊有關為Web開發提供的10個Ruby on Rails Gems有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在這里,值得推薦的 Ruby on Rails 的 web 開發的插件包括 Capistrano 和 Foreigner。

我用 Ruby on Rails 開發已經有很多年了,用這個優秀的框架我完成了很多任務,其中有些可以算是非常復雜的項目。基于我的經驗,我來推薦一些我覺得非常有用的 gem。

為Web開發提供的10個Ruby on Rails Gems有哪些

不幸的是,gem 的格式描述不支持分類和標簽。所以我們不得不期望 gem  的作者在描述里列出我們需要的關鍵字,這樣在搜索的時候才能更好的得到結果。你可以在 rubygems.org 或者 github.com  上找到很多 gem。可以通過描述去進行搜索(GitHub 上你還可以在語言列表中選上 Ruby)

另一個值得介紹的是 Ruby Toolbox。它可以讓你按分類和熱度進行搜索。不過不要僅依賴這個工具,因為 Ruby Toolbox 的作者是手工添加新的 gem 的。

Foreigner

這個 gem 可以幫你創建表的外鍵,它非常容易使用。你只需要簡單的把它加到 Gemfile,它會為你的 migrations 增加兩個方法  :add_foreign_key 和 remove_foreign_key。當然,你也可以使用這兩個方法在 create_table 和  change_table 的時候添加或刪除 key。

假設我們需要添加一個 key,這個 key 從 comment 表指向 posts 表。我們可以這樣做:

class CreateComments < ActiveRecord::Migration def change create_table :comments do |t| # &hellip; t.references :post # ... t.foreign_key :posts end # &hellip; end end

這些方法有一些額外的選項,例如 name,column,dependent。你可以參考文檔。

也許有人會認為,準確的說這個 gem 并非只適用于 Rails 的新版本,不過它確實是只有 4.2 以上的版本才支持的(其實之前已經有第三方的支持了)。總之,我認為這個 gem 屬于最有用的 gem 列表之一。

項目的 GitHub 鏈接

letter_opener

事實上,一個簡單而有用的 gem,它是保存文件夾電子郵箱的一個插件而不是發送它們。通過激活這個 gem,你必須設置 letter_opener 作為應用配置中的遞交方式(例如在 config/enviroments/development.rb之中)

太好啦!現在所有發出去的消息將被存貯在 /tmp/letter_opener

文件夾里,并且新的電子郵箱被發送之后會在瀏覽器中預覽。它簡單且實際。

請鏈接到Github。

Kaminari

該 gem 允許你很容易的創建任一復雜性的 paginators 模塊。Kaminari 支持幾個ORMs(ActiveRecord,Mongoid,MongoMapper)以及模板引擎(ERB,Haml,Slim)。

Kaminari 并不嵌套基礎類:如 array,hash,Object 以及 ActiveRecord::Base。

讓我們開始使用 Kaminari 吧,把它放在 gem  文件中,已經足夠啦。某些功能變成可用之后,例如:頁,每個以及對齊。現在,你可以借助于Kaminari.paginate_數組方法,來輕松地把你的 數組轉換成一個分頁模塊,然后許多有用的分頁功能將可以訪問。

@paginatable_array = Kaminari.paginate_array(my_array_object).page(params[:page]).per(10)

默認的配置將被生成在 Kaminari&middot; 配置初始化程序中。

default_per_page, max_per_page, max_pages &ndash; 這是一個簡要的能被設置的選項列表。

除此之外,該分頁的每個模塊能被獨立的配置。

class User < ActiveRecord::Base  paginates_per 50 end

如果你需要定制 paginator,你可以通過運行一個生成器來創建模板:

% rails g kaminari:views default # -e haml - if you want to use  HAML template engine.

該模板將被創建于 app/views/kaminari/ 之中,現在,你可以輕松地編輯他們。

本地化(I18n)標簽,主題和友好的 urls,以及其他有用的 gem 文檔選項能被找到。

請鏈接到 Github

CarrierWave

使用 CarrierWave 讓你能夠從你的 RoR 應用程序中上傳任何文件。所有你需要做的事情如下:

創建一個 uploader:

rails generate uploader ProductPhotoUploader

添加一些選項:

class ProductPhotoUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick storage :file def store_dir "product_images" end def extension_white_list %w(jpg jpeg gif png) end def filename Digest::SHA1.hexdigest(self.read) + File.extname(original_filename) end end

你已經可以使用 uploader 在存儲器中保存文件了。

uploader = ProductPhotoUploader.new uploader.store!(my_file)

CarrierWave 還允許你在臨時存儲、文件系統、甚至是云空間中儲存文件。

你可以將 CarrierWave uploader 連接到 AR(還有其他 ORM 適配器)模型,并通過在數據庫中保存一條記錄來存儲你的文件:

class Retailer < ActiveRecord::Base mount_uploader :logo, RetailerLogoUploader end retailer = Retailer.new File.open('logo.jpg') { |f| retailer.logo = f } retailer.save! retailer.logo.url # => '/url/to/logo.png'

此外,也可以改變上傳圖像的品質,對它進行剪裁,加密文件以及在運行中做更多的事情,在上傳時 &ndash; 所有這一切都可以在文檔中找到。

訪問項目的 GitHub 鏈接。

Urlify

用于將 diacritic 字符串轉換為 ASCII-safe URI 字符串的一個簡單且易于使用的 gem。在安裝好這個 gem 之后,你可以為任何東西調用 urlify 函數,它將會立即被轉換為一個等價的兼容 URI。

URLify.urlify('Kj?le Test') #=> kjoele_test

或:

URLify.urlify('Kj?le Test', '-') #=> kjoele-test

訪問項目的 GitHub 鏈接。

WickedPdf

WickedPdf 是一個用于將 html 生成為 PDF 的 RoR 插件。在添加這個 gem 之后,你需要做以下步驟:

創建初始化:

rails generate wicked_pdf

注冊 mine-type:

Mime::Type.register "application/pdf", :pdf

考慮到這個 gem 使用了 wkhtmltopdf,所以應該在 gem 的設置中指定其路徑。

WickedPdf.config = { exe_path: '/usr/local/bin/wkhtmltopdf' }

訪問該項目的 GitHub 鏈接。

Countries

如果你面臨著需要處理關于不同國家的信息的任務,這個 gem  將會提供你解決這個問題所需要的所有數據。有按國家名稱和區域搜索,貨幣信息(符號,代碼),各種形式的電話號碼,坐標等功能。所有這一切需要你在安裝它 之后創建一個 country 對象(或者從一個全局 helper 中獲取),然后你就可以得出必要的信息了:

c = ISO3166::Country.new('UA') # or to use global helper  = Country['UA'] c.name      #=> "Ukraine" c.alpha2#=> "UK" c.alpha3#=> "UKR" c.longitude #=> "49 00 N" c.latitude  #=> "32 00 E"

以下為關于如何獲取貨幣信息的代碼:

c.currency.code   #=> "UAH" c.currency.symbol #=> "?" c.currency.name   #=> "Hryvnia"

或者檢查該國是否為歐盟成員:

c.in_eu? #=> false

以下為通過名稱以及貨幣代碼搜索國家的示例:

c = ISO3166::Country.find_country_by_name('Ukraine') 
c = ISO3166::Country.find_country_by_currency('UAH')

訪問該項目的 GitHub 鏈接。

CanCanCan

這個庫讓你可以很方便的在 RoR 中配置權限。使用它你可以很容易的實現對特定資源的訪問的限制。其便利之處在于權限的管理是跟用戶分離的,而且所有的權限都存儲在一個單獨的地方。這就是為什么你不用再控制器、視圖和數據庫請求中重復地做一些事情。

這個庫需要在控制器中定義一個 current_user 方法。所以你首先要對身份認證信息進行配置(這次我用到了 Devise, 不過其它的gem也可以做到)。然后. Then, generate an ability:

rails g cancan:ability

使用 :read, :create, :update 和 :destroy 這些命令來指定用戶權限 (can/cannot 方法), (你可以在文檔中找到更多)。

class Article::Ability     include CanCan::Ability   def initialize(user) case user      when Admin          cannot :manage, :profile          can :read, :all          when Moderator          can :manage, [Apartment, RoomPrice], { lessor_id: user.id }             can :manage, Photo, { photographer_id: user.id }          can :manage, Lessor, { id: user.id }          can :manage, :profile  end   end end

之后,在視圖中你可以使用 can? 和 cannot? 輔助方法來檢查當前用戶對于給定action的權限:

<% if can? :update, @article %> <%= link_to "Edit", edit_article_path(@article) %> <% end %>

你還可以使用 authorize! 來對控制器中的action進行權限認證:

def show     @article = Article.find(params[:id])     authorize! :read, @article end

或者你也用到前置過濾器 load_and_authorize_resource, 它會加載資源同時嘗試對其進行權限認證。

你可以使用下面的方式來catch由 CanCan::AccessDenied拋出的異常來處理有關權限認證方面的錯誤:

class ApplicationController < ActionController::Base  rescue_from CanCan::AccessDenied do |exception|  redirect_to root_url, :alert => exception.message  end end

其它信息可以在 GitHub 上的文檔中找到。

鏈接到 GitHub.

Formtastic

該 gem 提供很棒的 DSL 支持,讓你可以很容易的構建出漂亮直觀的基于語義的 rich form,它提供的 DSL 很容易上手:只需要在一個 Semantic_form_for 代碼塊里列出所有的字段,然后就可以得到一個漂亮的 form:

<%= semantic_form_for @post do |f| %>  <%= f.inputs "Basic", :id => "basic" do %>  <%= f.input :title %>  <%= f.input :body %>  <% end %>  <%= f.inputs :name => "Advanced Options", :id => "advanced" do %>  <%= f.input :slug, :label => "URL Title", :hint => "Created automatically if left blank", :required => false %>  <%= f.input :section, :as => :radio %>  <%= f.input :user, :label => "Author" %>  <%= f.input :categories, :required => false %>  <%= f.input :created_at, :as => :string, :label => "Publication Date", :required => false %>  <% end %> <%= f.actions do %> <%= f.action :submit %>  <% end %> <% end %>

你也可以使用嵌套的資源:

<%= semantic_form_for [@author, @post] do |f| %>

也支持嵌套的 form。你可以使用 f.semantic_form_for(Rails 風格),不過 Formtastic 風格的寫法更好看一些,你可以使用 :for 選項。

<%= semantic_form_for @post do |f| %> <%= f.inputs :title, :body, :created_at %>  <%= f.inputs :first_name, :last_name, :for => :author, :name => "Author" %>  <%= f.actions %> <% end %>

你可以很容易的更改 input 的行為:

class StringInput < Formtastic::Inputs::StringInput  def to_html puts "this is my modified version of StringInput" super end end

基于已有的input創建自己的input:

class FlexibleTextInput < Formtastic::Inputs::StringInput  def input_html_options  super.merge(:class => "flexible-text-area") end end

或者創建一個全新的 input 類型:

class DatePickerInput  include Formtastic::Inputs::Base def to_html # ... end end

使用方式:

:as => :date_picker

Formtastic 支持相當多的 input 類型 (select, check_boxes, radio, time_zone,  datetime_select,  range),基本及高級的本地化,belongs_to,has_many和has_and_belongs_to_many  的關聯以及其他很多特性,具體參考文檔。

GitHub 的項目鏈接。

Capistrano

該工具允許在多個遠程機器上通過 ssh 的并發來執行命令。此 gem 容易使用 DSL。它使您能夠定義將應用于某些角色機器的任務,并且通過網關機器來支持隧道連接。

打開 gem 之后,你必須執行:

bundle exec cap install

通過配置創建文件夾

如果你將使用不同的環境,你必須增加 STAGES 參數,例如:STAGES = local, sandbox, qa, production。運行一個 cap 腳本,使用該命令-

bundle exec cap [environments separated by gaps] [command]。例如,將部署看起來就如此的舞臺環境:

bundle exec cap staging deploy

Capistrano DSL 通過 Rake 來借用。以下是該任務的一個簡單例子:

server 'example.com', roles: [:web, :app] server 'example.org', roles: [:db, :workers] desc "Report Uptimes" task :uptime do  on roles(:all) do |host| execute :any_command, "with args", :here, "and here" info "Host #{host} (#{host.roles.to_a.join(', ')}):/t#{capture(:uptime)}" end end

參閱所有可能的參數文檔,更多關于定義任務的詳細細節,請連接該插件和其他東西。

鏈接到Github。

看完上述內容,你們對為Web開發提供的10個Ruby on Rails Gems有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌平区| 岳阳县| 屏山县| 靖州| 阿克| 吉林省| 泸州市| 浦北县| 吴旗县| 定兴县| 仁布县| 台安县| 遂宁市| 平乡县| 宾阳县| 太康县| 宣城市| 涞水县| 张家口市| 米泉市| 武安市| 西安市| 永平县| 洪洞县| 浏阳市| 贞丰县| 平安县| 双鸭山市| 德清县| 镇平县| 金溪县| 拜泉县| 锡林郭勒盟| 南部县| 寿宁县| 邹平县| 梅河口市| 建德市| 元朗区| 陆良县| 汤原县|