Tag: ruby

Ruby混合和调用超级方法

好吧,所以我一直在我的小Rails应用程序中重构我的代码,以消除重复,一般来说让我的生活更轻松(因为我喜欢简单的生活)。 这个重构的一部分,一直是将我的两个模型中通用的代码移动到一个模块,我可以将其包含在我需要的地方。 到现在为止还挺好。 看起来它会运行,但我刚刚遇到一个问题,我不知道如何解决。 该模块(我称之为“可发送”)只是处理传真,电子邮件或打印文档PDF的代码。 所以,例如,我有一个采购订单,我有内部销售订单(想象力缩写为ISO)。 我碰到的问题是,我想在加载对象后初始化一些variables(对于拼写不正确的人初始化:P),所以我一直在使用after_initialize钩子。 没问题,直到我开始添加一些mixin。 我所after_initialize的问题是,我可以在任何一个after_initialize中都有一个after_initialize ,所以我需要在开始时包含一个超级调用,以确保其他mixin after_initialize调用被调用。 这真是太棒了,直到我打电话给超级电话,我得到一个错误,因为没有超级电话。 这里有一个小例子,如果我没有足够的困惑: class Iso < ActiveRecord::Base include Shared::TracksSerialNumberExtension include Shared::OrderLines extend Shared::Filtered include Sendable::Model validates_presence_of :customer validates_associated :lines owned_by :customer order_lines :despatched # Mixin tracks_serial_numbers :items # Mixin sendable :customer # Mixin attr_accessor :address def initialize( params = nil ) super self.created_at ||= Time.now.to_date […]

捆绑器可以显示Gemfile中的哪些gem具有更新的版本(例如捆绑更新的干运行)

有没有办法在假装模式下运行包更新 ,类似于Rails生成器的-p(假装)标志或帽的-n(干运行)标志? 我想象的是这样的: $> bundle update -p Fetching source index for http://rubygems.org/ The following gems have updated versions: … list of gems …

什么是构造ruby的现代方式?

Bundler的发布有很大的改变吗? 有没有可以作为基地的模板? 什么是最佳实践?

如何用NokogiriparsingHTML表格?

我安装了Ruby和机械化。 在我看来,在Nokogiri可以做我想做的事情,但我不知道该怎么做。 这table呢? 它只是vBulletin论坛网站的HTML的一部分。 我试图保持HTML结构,但删除一些文本和标签属性。 我想要得到一些细节,如:标题,作者,date,时间,回复和视图。 请注意,HTML文档中有几个表? 我在它的tbody之后的一个特定的表格之后, <tbody id="threadbits_forum_251"> 。 名字将永远是相同的(我希望)。 我可以在代码中使用tbody和name吗? <table > <tbody> <tr> <!– table header –> </tr> </tbody> <!– show threads –> <tbody id="threadbits_forum_251"> <tr> <td></td> <td></td> <td> <div> <a href="showthread.php?t=230708" >Vb4 Gold Released</a> </div> <div> <span><a>Paul M</a></span> </div> </td> <td> 06 Jan 2010 <span class="time">23:35</span><br /> by <a href="member.php?find=lastposter&amp;t=230708">shane943</a> […]

Rails的文章助手 – “a”或“an”

有谁知道一个Rails的帮手,可以自动预先适当的文章给给定的string? 例如,如果我把“苹果”传递给函数,它会变成“一个苹果”,而如果我发送“香蕉”,它会返回“一根香蕉” 我已经检查了Rails的TextHelper模块,但找不到任何东西。 道歉,如果这是一个重复,但无可否认是一个艰难的答案search…

如何在Ruby中实现1 + 1 = 3

我感觉到下面的解决scheme class Fixnum def +(x) self + x + 1 end end 不应该工作,因为+将被recursion调用。

Rails 4.0 Strong参数使用指向散列的键来嵌套属性

我正在玩Rails 4.xtesting版,并尝试使用carrierwave来获取嵌套属性。 不知道我在做什么是正确的方向。 经过四周search,然后最终看到了轨道来源和强大的参数,我发现下面的笔记。 # Note that if you use +permit+ in a key that points to a hash, # it won't allow all the hash. You also need to specify which # attributes inside the hash should be whitelisted. https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/strong_parameters.rb 所以它说你必须指定每一个单一的属性,我试着以下几点: 帕拉姆的例子: {"utf8"=>"✓", "authenticity_token"=>"Tm54+v9DYdBtWJ7qPERWzdEBkWnDQfuAQrfT9UE8VD=", "screenshot"=>{ "title"=>"afs", "assets_attributes"=>{ "0"=>{ "filename"=>#<ActionDispatch::Http::UploadedFile:0x00000004edbe40 @tempfile=#<File:/tmp/RackMultipart20130123-18328-navggd>, @original_filename="EK000005.JPG", @content_type="image/jpeg", @headers="Content-Disposition: form-data; […]

你将如何在Ruby on Rails应用程序中使用rSpectesting观察者?

假设你在一个Ruby on Rails应用程序中有一个ActiveRecord :: Observer – 你如何用rSpectesting这个观察者?

哈希成语在Ruby中的哈希?

在Ruby中创build哈希散列允许方便的两个(或更多)维查找。 但是,插入时必须始终检查散列中是否存在第一个索引。 例如: h = Hash.new h['x'] = Hash.new if not h.key?('x') h['x']['y'] = value_to_insert 在自动创build新哈希的情况下,最好执行以下操作: h = Hash.new h['x']['y'] = value_to_insert 同样,当查找第一个索引不存在的值时,如果返回nil,而不是接收未定义的'[]'错误的方法,则会更好。 looked_up_value = h['w']['z'] 我们可以创build一个具有这种行为的Hash包装类,但是是否存在一个用于完成此任务的Ruby成语?

Elastic Beanstalk Ruby / Rails需要安装git所以捆绑安装工程..但不是

我在部署我们的Rails应用程序时遇到问题..我在AWS博客上创build了一个类似于示例的钩子howto http://ruby.awsblog.com/post/Tx2AK2MFX0QHRIO/Deploying-Ruby-Applications-to-AWS-Elastic- Beanstalk-with-Git喜欢: packages: yum: git: [] 即使我运行捆绑包创build供应商/caching有所有的gem那里…仍然得到:git://github.com/refinery/refinerycms-search.git(在2-0稳定)不检查出。 请运行bundle install (Bundler :: GitError) 任何帮助都会很好,我们试图将所有的应用程序移到EB。 但注意到git没有安装或者正在发生什么..我需要在它创build的EB ec2实例上使用git。 堆栈跟踪: Error message: git://github.com/refinery/refinerycms-search.git (at 2-0-stable) is not checked out. Please run `bundle install` (Bundler::GitError) Exception class: PhusionPassenger::UnknownError Application root: /var/app/current Backtrace: # File Line Location 0 /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 801 in `rescue in load_spec_files' 1 /usr/share/ruby/1.9/gems/1.9.1/gems/bundler-1.2.1/lib/bundler/source.rb 799 in `load_spec_files' 2 […]