使用元编程来包围类中的方法

我有类的方法,这些方法在输入和退出方法时记录,如下所示: def methodName1(args) @logger.debug(“>>#{ callee }”) … @logger.debug(“<<#{ callee }”) end def methodName2(args) @logger.debug(“>>#{ callee }”) … @logger.debug(“<<#{ callee }”) end def methodName1(args) @logger.debug(“>>#{ callee }”) … @logger.debug(“<<#{ callee }”) end def methodName2(args) @logger.debug(“>>#{ callee }”) … @logger.debug(“<<#{ callee }”) end 我想知道是否有一种元编程方式用记录器调用来包围方法? 它将涉及识别我想要先包围然后围绕它们的类中的所有方法。 一个

方法定义的Ruby钩子?

我一直在谷歌搜索这个并且找不到答案,这让我觉得答案是否定的,但我想我会在这里问以防万一有人确切知道。 Ruby是否有定义方法的钩子(即在模块或类上)? 如果没有,是否有人熟悉main对象的实现,以了解在顶层定义方法时如何将方法复制到Object ? 真的好奇这个。 谢谢你的任何信息:)

在RoR中将Params传递给CanCan

我有一个像这样的方法的控制器; def show if params[:format].eql?(“pdf”) // do something elsif params[:format].eql?(“csv”) // do something end end 但我有不同角色的用户。 所以我使用CanCan来管理访问控制。 现在我想X角色可以在控制器中执行动作show iff params[:format].eql?(“csv”) 我觉得它可能会像; can :show, resource if params[:format].eql?(“csv”) 。 那么如何将参数发送到ability.rb? 任何的想法? 谢谢。

在Windows上安装RMagick

我已经对此进行了研究,并且我已经在我的一台计算机上进行了数小时的研究。 我大约3周前在桌面计算机上安装了RMagick,而且相当复杂。 我不记得我采取的确切步骤,我真的很沮丧。 我在目录C:\ ImageMagick中将ImageMagick安装到我的机器上 我也为Ruby安装了开发套件。 我还将rmagick-rmagick-v2-2-g564f157放入我C中的正确gems文件夹中:它位于C:\ Ruby22-x64 \ lib \ ruby​​ \ gems \ 2.2.0 \ gems中 我收到以下错误: 我将输入: gem install rmagick — ‘–with-opt-dir=”c:\ImageMagick”‘ 并得到以下错误: Temporarily enhancing PATH to include DevKit… Building native extensions with: ‘–with-opt-dir=”c:\ImageMagick”‘ This could take a while… ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. C:/Ruby22-x64/bin/ruby.exe -r […]

Rails3 ActionView模板处理程序不适用于Production Server

我使用的是Rails 3.2.3 / Ruby 1.9.3p125 / jbuilder(0.4.0) 在我的view/mycontroller文件夹中,我有一个show.json.jbuilder文件。 当我使用rails s -e production在我的本地机器上测试一切时,一切正常。 JSON被渲染为受到尊重。 但是当我部署到Ubuntu LTS(nginx / unicorn)时,我收到以下错误消息: ActionView::MissingTemplate (Missing template mycontroller/show, application/show with {:locale=>[:de, :en], :formats=>[:json], :handlers=>[:erb, :builder]}. Searched in: * “/home/deployer/apps/myapp/releases/#############/app/views” ): 当我检查我的服务器上是否使用bundle show jbuilder安装了jbuilder gem时,一切似乎都正确。 奇怪的是,错误消息没有显示:handlers=>[:erb, :builder, :jbuilder]显然缺少jbuilder处理程序。 但是我该如何解决这个问题呢? 编辑:问题不是基于Jbuilder。 我试过了rabl,出现了同样的问题。 有人提示,如何调试? 这里有更多信息: 的Gemfile source ‘https://rubygems.org’ gem ‘rails’, ‘3.2.3’ gem ‘jquery-rails’ gem ‘mysql2’ […]

在控制台中执行命令后避免打印

我正在打开非常大的YAML文件。 这需要一段时间。 但在打开它之后,它正在打印所有内容 – 它需要花费很多倍的时间。 那么如何在Ruby控制台中避免打印结果: data = YAML.load_file( … ) # some 1GB data file.

填充表格数据的打印输出

我知道这可能很简单,但我在一个文件中有一些这样的数据: Artichoke Green Globe, Imperial Star, Violetto 24″ deep Beans, Lima Bush Baby, Bush Lima, Fordhook, Fordhook 242 12″ wide x 8-10″ deep 我希望能够格式化成一个漂亮的TSV类型的表,看起来像这样: Name | Varieties | Container Data ———-|————- |——- some data here nicely padded with even spacing and right aligned text

如何解析哈希的字符串表示

我有这个字符串,我想知道如何将其转换为哈希。 “{:account_id=>4444, :deposit_id=>3333}”

Ruby的范围步骤方法导致执行速度非常慢?

我有这段代码: date_counter = Time.mktime(2011,01,01,00,00,00,”+05:00″) @weeks = Array.new (date_counter..Time.now).step(1.week) do |week| logger.debug “WEEK: ” + week.inspect @weeks << week end 从技术上讲,代码工作,输出: Sat Jan 01 00:00:00 -0500 2011 Sat Jan 08 00:00:00 -0500 2011 Sat Jan 15 00:00:00 -0500 2011 etc. 但执行时间完全是垃圾! 每周计算大约需要4秒钟。 我在这段代码中遗漏了一些怪诞的低效率吗? 看起来很简单。 我正在使用Rails 3.0.3运行Ruby 1.8.7。

如何在Ruby中将BOM标记写入文件

我有一些带拐杖的工作代码,可以将BOM标记添加到新文件中。 #writing File.open name, ‘w’, 0644 do |file| file.write “\uFEFF” file.write @data end #reading File.open name, ‘r:bom|utf-8’ do |file| file.read end 有没有办法自动添加标记而不在数据之前写出神秘的”\uFEFF” ? 像File.open name, ‘w:bom’ # this mode has no effect可能File.open name, ‘w:bom’ # this mode has no effect ?