标签: ruby


有没有办法从该实例内部为Ruby类的实例创建方法?

让我们class Example定义为:

class Example
  def initialize(test='hey')
    self.class.send(:define_method, :say_hello, lambda { test })
  end
end
Run Code Online (Sandbox Code Playgroud)

在打电话给Example.new; Example.new我得到一个warning: method redefined; discarding old say_hello.我总结说,这必须是因为它在实际的类中定义了一个方法(从语法上来说这是有意义的).当然,如果Example在他们的方法中存在多个具有不同值的实例,那将是灾难性的.

有没有办法从该实例内部为类的实例创建方法?

ruby

47
推荐指数
3
解决办法
3万
查看次数

How to explicitly fail a task in ruby rake?

Let's say I have a rakefile like this:

file 'file1' => some_dependencies do
  sh 'external tool I do not have control over, which sometimes fail to create the file'
  ???
end

task :default => 'file1' do
  puts "everything's OK"
end
Run Code Online (Sandbox Code Playgroud)

Now if I put nothing in place of ???, I get the OK message, even if the external tool fails to generate file. What is the proper way to informing rake, that 'file1' task has failed and it should abort …

ruby rake

47
推荐指数
2
解决办法
2万
查看次数

如何通过一组新的给定键更改哈希的所有键

如何通过一组新的给定键更改哈希的所有键?

有没有办法优雅地做到这一点?

ruby hash

47
推荐指数
2
解决办法
2万
查看次数

Ruby帖子标题为slug

我应该如何将帖子标题转换为Ruby中的slug?

标题可以有任何字符,但我只想让slug允许[a-z0-9-_](它应该允许任何其他字符?).

所以基本上:

  • 把所有字母都写下来
  • 将空格转换为连字符
  • 删除无关的字符

ruby string lowercase gsub

47
推荐指数
3
解决办法
2万
查看次数

Rails可选参数

我上课了

class Person
    attr_accessor :name,:age
    def initialize(name,age)
        @name = name
        @age = age
    end
end
Run Code Online (Sandbox Code Playgroud)

我想使年龄可选,所以如果没有通过它的0,或者如果不通过则该名称为空白

我已经对它进行了一些研究,但它对于我发现的东西(必须在另一个变量{}中传递变量)有点混乱.

ruby ruby-on-rails

47
推荐指数
2
解决办法
7万
查看次数

如何使用RSpec测试渲染部分

我想根据某些条件测试渲染特定的部分.

例如,在模型显示操作视图中,show.html.erb我有:

<% if condition1 %>
 <%=  render :partial => "partial1" %>
<% else %>
 <%=  render :partial => "partial1" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我试过了:

response.should render_template("partial_name")
Run Code Online (Sandbox Code Playgroud)

但它告诉它呈现"显示"模板

期待<"partial1">但使用<"model/show,layouts/application">进行渲染

我做错了什么?

ruby rspec ruby-on-rails ruby-on-rails-3

47
推荐指数
3
解决办法
2万
查看次数

让sidekiq立即执行一份工作

目前,我有一个像这样的sidekiq工作:

class SyncUser
  include Sidekiq::Worker

  def perform(user_id)
    #do stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在这样的队列中找到一份工作:

SyncUser.perform_async user.id
Run Code Online (Sandbox Code Playgroud)

当然这一切都有效但调用perform_async和实际执行的作业之间存在一点滞后.

还有什么我可以告诉sidekiq立即执行这项工作吗?

ruby sidekiq

47
推荐指数
2
解决办法
3万
查看次数

如何在Rails上获取ruby中的月份名称?

所以我在我的视图中创建:

<%=date=Date.today%>
Run Code Online (Sandbox Code Playgroud)

我如何获得该日期的名称?我试着做某事

 <%= DATE::ABBR_MONTHNAMES(date.month)%>    
Run Code Online (Sandbox Code Playgroud)

但没有成功.我不断收到错误:未初始化的常量ActionView::Base::CompiledTemplates::MONTHNAMES

我如何初始化常量或是否有任何其他方法来获取日期格式的名称?

非常感谢任何答案!

ruby ruby-on-rails

46
推荐指数
4
解决办法
4万
查看次数

从Ruby中的字符串创建不区分大小写的正则表达式

假设我有一个任意的字符串

`A man + a plan * a canal : Panama!`
Run Code Online (Sandbox Code Playgroud)

我想做一个正则表达式搜索除了case之外的其他字符串.也就是说,这个正则表达式应该与字符串匹配

`a man + A PLAN * a canal : PaNaMa!`
Run Code Online (Sandbox Code Playgroud)

我认为最好的方法是反斜杠 - 在Ruby正则表达式中具有特殊含义的每个字符,然后Regexp.new使用该字符串和Regexp::IGNORECASE参数.是对的吗?是否有一个经过验证的正则表达式,用于将任意字符串转换为文字正则表达式?

顺便说一句,我最终想要使用这个正则表达式来执行任意不区分大小写的MongoDB查询.所以,如果我有另一种方式,请告诉我.

ruby regex

46
推荐指数
4
解决办法
3万
查看次数