如何确定一个方法定义的类?

我想动态确定当前方法定义的类。 这是我正在尝试做的一个静态示例: class A def foo puts “I was defined in A” end end class B < A def foo puts "I was defined in B" super end end A.new.foo # I was defined in A B.new.foo # I was defined in B # I was defined in A <- this is the tricky one […]

将操作员传递给函数?

也许这听起来很荒谬,但我想知道这可能与Ruby有关吗? 基本上我有一个function…… def add a,b c = a + b return c end 我希望能够将“+”或其他操作符(例如“ – ”)传递给函数,以便它可以像… def sum a,b,operator c = a operator b return c end 这可能吗?

ruby中的数据库连接池

我刚开始使用Ruby,我正在玩Sinatra,但找不到在请求之间共享数据库连接的方法。 我来自Java web developpement,你要做的基本事情之一是汇集数据库连接,所以我确信Ruby中存在类似的东西,但我找不到它。 ActiveRecord和DataMapper提供此function,但我不需要ORM,只想进行常规SQL查询。 Sinatra是否有一些特定的方法,或者所有基于Rack的应用程序都有通用的方法?

向Rails 3添加Ruby扩展方法的最佳实践?

我有一个我希望在我的Rails 3项目中使用的数组扩展方法。 它应该住在哪里? 我有一个应用程序/类,我最初放在它(array_extensions.rb),在我的config / application.rb中我加载路径: config.autoload_paths += %W(#{Rails.root}/app/classes) 。 但是,当我放入rails console ,未加载扩展。 是否有一个预定义的地方我应该为Rails 3添加我的扩展方法? 或者,一种预先定义的方式来添加它们? 我知道Rails有它自己的Array扩展方法。 我应该将我的内容添加到active_support/core_ext/array/conversions.rb吗? Rails 3的最佳实践是什么?

使用Nokogiri构建空白XML标签?

我正在尝试使用Nokogiri构建XML文档。 到目前为止,一切都很标准; 我的大多数代码看起来像: builder = Nokogiri::XML::Builder.new do |xml| … xml.Tag1(object.attribute_1) xml.Tag2(object.attribute_2) xml.Tag3(object.attribute_3) xml.Tag4(nil) end builder.to_xml 但是,这会导致像而不是这样的 ,这是我的最终用户指定输出所需的标记。 如何告诉Nokogiri将全部标签放在零值附近?

动态分配背景图像scss / sass

我想要做的是有一个表格,你可以上传一张图片,然后当你查看该对象时,图片锥体在特定的div中垂直和水平居中。 它的大小是未知的,等等。 除非有办法使用image_tag帮助器垂直居中,否则我希望能够将图像用作背景图像。 在我的.css.scss文件中,我希望能够做类似的事情 .image_div { background-image: image_url(“#{@object.image}”); background-position: center } 我使用CarrierWave上传图片,当我输出@ object.image时,它会将我计算机上的路径提供给图像(所以我不知道在生产中是否会被视为路径或url)。 有任何想法吗?

Ruby on Rails迁移,将表更改为MyISAM

如何正确创建Rails迁移,以便在MySQL中将表更改为MyISAM? 它目前是InnoDB。 运行原始执行语句将更改表,但它不会更新db / schema.rb,因此当在测试环境中重新创建表时,它会返回InnoDB并且我的全文搜索失败。 如何更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库相应更新?

从Ruby on Rails 3.2.6中的Paperclip生成的文件中删除问号

我正在使用Paperclip-FFMEG将video文件上传到我的开发环境(当我的项目投入生产时,最终会上传到本地服务器)。 上传video时,默认情况下,文件名如下: /system/modelnames/paperclipnames/…/mynewfile.mp4?xxxxxxxxxx 我相信问号后面的10位数字是一个时间戳。 但是,我将用来播放video的播放器不希望在文件附件后有任何内容 – 因此我想在将URL传递给播放器之前删除问号和后面的时间戳。 我试着使用以下Ruby(我认为)strip函数: temp_variable = model.paperclipattribute.url(:blah).strip(‘?’)[0] 但是,Rails会抛出一个错误: wrong number of arguments(1 for 0) 我认为我做错了吗? 还有其他方法吗? 我不想完全关闭时间戳,因为在这种情况下我只需要这样做。 谢谢!

在gem中使用Pry而无需修改Gemfile或使用`require`

我正在尝试调试Rails应用程序使用的gem。 我在当地克隆了Gem以进行撬动(并且还允许我做一些好东西,比如git bisect等) # Gemfile gem “active_admin”, path: “~/dev-forks/active_admin” 但是,我经常坚持将Pry添加到Gemfile某处以便能够使用它,或者在代码中调用require “pry” ,即使我不想在那里使用它。 例如,我有时会忘记它,修复bug,然后在Gemfile中使用Pry提交项目。 如果我不这样做,会出现LoadError , cannot load such file — pry (LoadError) 。 我必须管理我在不同的上下文(Rails项目,Gem,本地Ruby)和实际的Gems(Gemfile,require,installed)之间有点迷失。 如何在没有Gemfiles干预的情况下在Rails中的Gem中使用binding.pry?

列出两个日期之间的天数

我想列出两个日期之间的一系列天数。 我可以使用下面的代码列出几个月的数组。 我怎么能改变它来显示两个日期之间的每一天? require ‘date’ date_from = Date.parse(‘2011-05-14’) date_to = Date.parse(‘2011-05-30’) date_range = date_from..date_to date_months = date_range.map {|d| Date.new(d.year, d.month, 1) }.uniq date_months.map {|d| d.strftime “%d/%m/%Y” } puts date_months