当前位置: 首页 > 科技观察

Web开发的10个RubyonRailsGems

时间:2023-03-12 10:22:00 科技观察

这里,推荐用于Web开发的RubyonRails插件包括Capistrano和Foreigner。我已经在RubyonRails中进行了多年的开发,并且使用这个优秀的框架完成了很多任务,其中一些可以认为是非常复杂的项目。根据我的经验,我想推荐一些我觉得非常有用的宝石。本文将分享这份推荐列表,并告诉您如何为RoR找到有用的宝石。不幸的是,gem的格式描述不支持类别和标签。所以我们不得不期望gem的作者在描述中列出我们需要的关键字,这样我们在搜索的时候才能得到更好的结果。您可以在ruby??gems.org或github.com上找到许多gem。您可以按描述搜索(您也可以在GitHub上的语言列表中选择Ruby)。另外值得介绍的是RubyToolbox。它可以让您按类别和受欢迎程度进行搜索。不要仅仅依赖这个工具,因为Ruby工具箱的作者会手动添加新的gem。Foreignergem可以帮助您为表创建外键,而且非常易于使用。您只需将它添加到您的Gemfile中,它就会为您的迁移添加两个方法:add_foreign_key和remove_foreign_key。当然你也可以在create_table和change_table的时候使用这两个方法来增加或者删除key。假设我们需要添加一个从评论表指向帖子表的键。我们可以这样做:依赖。您可以参考文档。可能有人会认为这个gem不仅适用于新版本的Rails,而且确实只有4.2以上的版本才支持(其实之前已经有第三方支持了)。总而言之,我认为这个gem属于最有用的gem列表之一。该项目的GitHub链接letter_opener实际上是一个简单实用的gem,它是一个用于保存文件夹电子邮件而不是发送它们的插件。通过激活此gem,您必须将letter_opener设置为应用程序配置中的传递方法(例如,在config/enviroments/development.rb中)太棒了!现在所有外发邮件都将存储在/tmp/letter_opener文件夹中,新邮件发送后将在浏览器中预览。简单实用。请链接到Github。Kaminarigem允许您轻松创建任何复杂度的分页器模块。Kaminari支持多种ORM(ActiveRecord、Mongoid、MongoMapper)和模板引擎(ERB、Haml、Slim)。Kaminari不嵌套基类:array、hash、Object和ActiveRecord::Base。让我们开始使用Kaminari,将它放在gem文件中就足够了。在某些功能可用后,例如:page、each和justify。现在,借助Kaminari.paginate_array方法,您可以轻松地将数组转换为分页模块,然后可以访问许多有用的分页功能。@paginatable_array=Kaminari.paginate_array(my_array_object).page(params[:page]).per(10)默认配置将在Kaminari配置初始化程序中生成。default_per_page、max_per_page、max_pages-这是可以设置的选项的简短列表。此外,页面的每个模块都可以独立配置。classUser'/url/to/logo.png'此外,您还可以更改上传图像的质量并裁剪它,加密文件并在上传时即时执行更多操作-所有这些都可以在文档中找到。访问该项目的GitHub链接。Urlify是一个简单易用的gem,用于将变音符号字符串转换为ASCII安全URI字符串。安装此gem后,您可以对任何内容调用urlify函数,它会立即转换为等效的兼容URI。URLify.urlify('Kj?leTest')#=>kjoele_test或:URLify.urlify('Kj?leTest','-')#=>kjoele-test访问项目的GitHub链接。WickedPdfWickedPdf是一个用于生成html到PDF的RoR插件。添加这个gem之后,需要做如下步骤:创建初始化:railsgeneratewicked_pdf注册mine-type:Mime::Type.register"application/pdf",:pdf考虑到这个gem使用wkhtmltopdf,应该在settingsgem指定它的路径。WickedPdf.config={exe_path:'/usr/local/bin/wkhtmltopdf'}访问项目的GitHub链接。国家如果您面临处理不同国家信息的任务,此gem将为您提供解决问题所需的所有数据。具有按国家名称和地区、货币信息(符号、代码)、各种形式的电话号码、坐标等进行搜索的功能。这一切都需要你在安装后创建一个国家对象(或者从全局帮助程序中获取),然后你就可以获得必要的信息:c=ISO3166::Country.new('UA')#ortouseglobalhelper=Country['UA']c.name#=>"Ukraine"c.alpha2#=>"UK"c.alpha3#=>"UKR"c.longitude#=>"4900N"c.latitude#=>"3200E"以下是关于如何获取货币信息的代码: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也可以)。然后,使用:read、:create、:update和:destroy命令生成一个ability:railsgcancan:ability来指定用户权限(can/cannot方法)(您可以在文档中找到更多信息)。classArticle::AbilityincludeCanCan::Abilitydefinitialize(user)caseuserwhenAdmincannot:manage,:profilecan:read,:allwhenModeratorcan:manage,[Apartment,RoomPrice],{lessor_id:user.id}can:manage,Photo,{photographer_id:user.id}can:manage,Lessor,{id:user.id}can:manage,:profileendendend之后,在视图中可以使用can?不能?检查当前用户对给定操作的权限的辅助方法:<%ifcan?:update,@article%><%=link_to"Edit",edit_article_path(@article)%><%end%>您也可以使用授权!验证控制器中的操作:defshow@article=Article.find(params[:id])authorize!:read,@articleend或者您也可以使用前置过滤器load_and_authorize_resource,它将加载资源并尝试授权它.可以使用下面的方法捕获CanCan::AccessDenied抛出的异常来处理授权认证相关的错误:在GitHub上的文档中。链接到GitHub.Formtastic这个gem提供了强大的DSL支持,让您可以轻松构建美观直观的基于语义的丰富表单。它提供的DSL简单易用:只需在一个Semantic_form_for代码块字段中列出所有内容,即可得到漂亮的表格:<%=semantic_form_for@postdo|f|%><%=f.inputs"Basic",:id=>"基本"do%><%=f.input:title%><%=f.input:body%><%end%><%=f.inputs:name=>"AdvancedOptions",:id=>“高级”do%><%=f.input:slug,:label=>"URLTitle",:hint=>"Createdautomaticallyifleftblank",:required=>false%><%=f.input:section,:as=>:radio%><%=f.input:user,:label=>"作者"%><%=f.input:categories,:required=>false%><%=f.input:created_at,:as=>:string,:label=>"PublicationDate",:required=>false%><%end%><%=f.actionsdo%><%=f.action:submit%><%end%><%end%>还可以使用嵌套资源:<%=semantic_form_for[@author,@post]do|f|%>也支持嵌套形式。您可以使用f.semantic_form_for(Rails风格),但为了获得更好的Formtastic风格,您可以使用:for选项。<%=semantic_form_for@postdo|f|%><%=f.inputs:title,:body,:created_at%><%=f.inputs:first_name,:last_name,:for=>:author,:name=>"Author"%><%=f.actions%><%end%>您可以轻松更改输入的行为:classStringInput"flexible-text-area")endend或创建一个新的输入类型:classDatePickerInputincludeFormtastic::Inputs::Basedefto_html#...endUsage::as=>:date_pickerFormtastic支持很多输入类型(select,check_boxes,radio,time_zone,datetime_select,range),基本和高级本地化,belongs_to,has_many和has_and_belongs_to_manyassociations等许多特性,详情请参考文档。GitHub项目链接。Capistrano是一个允许通过ssh在多台远程机器上并发执行命令的工具。这个gem使使用DSL变得容易。它使您能够定义将应用于特定角色机器的任务,并支持通过网关机器进行隧道传输。打开gem后,你必须执行:bundleexeccapinstall通过配置创建文件夹如果你将使用不同的环境,你必须添加STAGES参数,例如:STAGES=local,sandbox,qa,production。要运行cap脚本,请使用命令-bundleexeccap[由间隙分隔的环境][命令]。例如,部署一个如下所示的暂存环境:bundleexeccapstagingdeployCapistranoDSL是通过Rake借用的。这是任务的一个简单示例:server'example.com',roles:[:web,:app]server'example.org',roles:[:db,:workers]desc"ReportUptimes"task:uptimedoonroles(:all)do|host|execute:any_command,"withargs",:here,"andhere"info"主机#{host}(#{host.roles.to_a.join(',')}):/t#{capture(:uptime)}"endend请参阅文档了解所有可能的参数、有关定义任务的更多详细信息、链接此插件和其他插件。链接到Github。好了,我的故事到此结束,回顾了十个最有用的Rubyonrailsgem,我希望你能找到这些有用的信息。您将在我与EvgeniyMaslov共同发表的文章“Rubyonrails中的eway支付网关集成”中阅读更多关于Rubyonrails的信息。谢谢你,再见,亲爱的读者。