我正在使用rbenv,为什么我的系统上有两条Gem路径? (OS X Lion)

为了澄清,我正在使用rbenv来管理我的ruby版本。 我的印象是二进制文件在各自的ruby版本目录中作为shims进行管理。 这是我的系统在运行gem环境时显示的内容(我排除了不相关的部分): – GEM PATHS: – /Volumes/Data/nathan/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1 – /Volumes/Data/nathan/.gem/ruby/1.9.1 有两个地点的任何理由? 好奇的人想知道。

用户在Ruby on Rails中标记(喜欢的)另一个模型

我想在Ruby on Rails应用程序中实现“Read Later”(就像collections夹)系统。 我想要的是User模型能够标记Content模型以便稍后阅读。 我在两个模型之间的关联是这样的: class User < ActiveRecord::Base has_many :contents end ————- class Content < ActiveRecord::Base belongs_to :user end 然后内容属于Category等,但这对问题无关紧要,所以我只是没有把它放在那里。 User可以标记Content (可能属于另一个用户),并且每个用户都会有一个“标记内容(稍后阅读)”的列表。 我怎么能实现这个? 我已经读过这个问题,但我并不是真的理解,当我试图模拟它时,它没有用。

Ruby试图掌握一种新的符号。 (注入(:)与选择(&:偶数?);为什么有&?)

所以,我刚学会了,而不是写下这样的东西: [1,2,3,4,5].inject {|x,y| x + y} => 15 我可以写 [1,2,3,4,5].inject(:+) => 15 我也学会了而不是写作 [1,2,3,4,5].select {|x| x.even?} => [2,4] 我可以写 [1,2,3,4,5].select(&:even?) => [2,4] 我的问题是为什么一个(选择)使用&而另一个(注入)不使用。 我确定:是因为even? 和+在符号处理,但我喜欢澄清为什么&在一个中使用以及为什么使用: 。 另外,我知道我可以做的不只是inject和select这些符号。 非常感谢!

获取块参数的数量

我需要获取给定块所需的参数数量。 例如: foobar(1,2,3) { |a, b, c| } def foobar(x, y, z, &block) # need to obtain number of arguments in block # which would be 3 in this example end 这可以在1.9主干中使用,但不能在任何正式版本中使用。 我希望如果有任何方法可以做到这一点,而无需下载单独的gem /扩展模块。

gem install kgio ERROR

我已经下载了一个rails开源webapp,当我开始使用时: C:\Users\admin\Downloads\iCare\icare-develop>rails server ←[31mCould not find kgio-2.8.0 in any of the sources←[0m ←[33mRun `bundle install` to install missing gems.←[0m 我尝试使用以下方法修复此错误: cmd:>gem install kgio -v ‘2.8.0’ 我收到了错误: Temporarily enhancing PATH to include DevKit… Building native extensions. This could take a while… ERROR: Error installing kgio: ERROR: Failed to build gem native extension.C:/Ruby193/bin/ruby.exe extconf.rb checking for CLOCK_MONOTONIC […]

RVM – MacPorts不会通过代理更新

我正在尝试使用RVM在我的iMac上安装ruby。 我首先键入以下内容: rvm list known 然后,我使用以下行来定位我要安装的版本(我正在遵循建议1.9.2而不是基础1.8.7的指南): rvm install 1.9.2 然后我明白了: 27698AM:~ butler15$ rvm install 1.9.2 Searching for binary rubies, this might take some time. No binary rubies available for: osx/10.7/x86_64/ruby-1.9.2-p320. Continuing with compilation. Please read ‘rvm mount’ to get more information on binary rubies. Installing requirements for osx, might require sudo password. Password: 我输入密码,我得到了这个: DEBUG: […]

如何在ruby中将单个数字编号设为两位数?

Time.new.month返回十月之前任何月份的单个数字表示(例如六月是6 ),但我想要一个2位数格式(即代替6我想要06 )。 我写了以下解决方案,我要求看一些其他/更好的解决方案。 s = 6.to_s; s[1]=s[0]; s[0] = ‘0’; s #=> ’06’

如何在Ruby中进行模糊子串匹配?

我找到了很多关于模糊匹配的链接,将一个字符串与另一个字符串进 我有一个非常长的字符串,它是一个文档和一个子字符串。 子字符串来自原始文档,但已被多次转换,因此可能引入了奇怪的工件,例如此处的空格,字符串。 子字符串将匹配原始文档中文本的一部分99%或更多。 我不匹配以查看此字符串是哪个文档,我试图在文档中找到字符串开始的索引。 如果字符串是相同的,因为没有引入随机错误,我会使用document.index(substring) ,但如果有一个字符差异,则会失败。 我认为通过删除字符串和子字符串中除az以外的所有字符来比较差异,然后使用压缩字符串时生成的索引将压缩字符串中的索引转换为真实文档中的索引。 这种情况很好用,其中差异是空格和标点符号,但只要一个字母不同就失败了。 该文档通常是几页到一百页,而子串从几个句子到几页。

ActionView :: Template ::错误:缺少要链接的主机

正如标题所暗示的,当我尝试在我的邮件模板中使用link_to时,我收到此错误: ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true 我试图按照它的说明,我也发现了这篇文章 ,但我仍然收到错误。 我尝试将config.action_mailer.default_url_options = { host: ‘example.com’ }到以下每个文件中,但没有一个工作: /config/environment.rb /config/application.rb (inside the module for my app) /config/development.rb (I’m in development mode) 在Rails 4中有什么变化使得这个工作有所不同吗?

Rails嵌套with_option:如果用于validation

validate :updatable? # First validation there is with_options :if => Proc.new { |object| object.errors.empty? } do |updatable| updatable.with_options :if => “self.current_step == basic” do |step| validates …. bla-bla bla 因此,在进行任何validation之前,将调用可更新子例程,并使用适当的错误填充errors[:base]数组,这意味着该对象不可更新。 如果在此子例程中发现任何错误,我希望它跳过其余的validation,但上述示例不起作用 – 它执行所有validation。 但是,如果我改变:if => “self.current_step == basic” to :if => “self.errors.empty? && self.current_step == basic”就像魅力一样。 我做错了什么? 示例显示,嵌套with_option应该有效。 有人能帮我吗 ? 提前致谢。