标签: ruby

您如何在Ruby on Rails应用程序中使用rSpec测试观察者?

假设您的Ruby on Rails应用程序中有一个ActiveRecord :: Observer - 如何使用rSpec测试此观察者?

ruby activerecord rspec ruby-on-rails observer-pattern

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

Ruby的自动代码质量工具?

我真正想念Java的一件事是工具支持.FindBugs,Checkstyle和PMD可实现三位一体的代码质量指标和自动错误检查.

是否有任何东西可以检查Ruby代码的简单错误和/或样式违规?如果我可以为Rails这样的框架调整它以便遵守Rails习语,则可以获得奖励积分.

ruby code-analysis ruby-on-rails

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

在Ruby中将实例变量添加到类中

如何在运行时将实例变量添加到已定义的类,然后从类外部获取并设置其值?

我正在寻找一种元编程解决方案,它允许我在运行时修改类实例,而不是修改最初定义类的源代码.一些解决方案解释了如何在类定义中声明实例变量,但这不是我所要求的.

ruby metaprogramming

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

你如何在Ruby中生成子进程?

我想将主进程中的一段代码卸载到子进程以使其同时运行.我也希望得到生成子进程的PID,以便在必要时监视并终止它.

ruby

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

Rails:你如何访问RESTful助手?

我正在尝试通过本指南来完成Rails路由,但我在第3.3节中遇到了困难:

创建RESTful路由还可以在应用程序中提供一堆帮助程序

然后他们列出一些助手一样photos_url,photos_path等等.

我的问题:

我在哪里可以找到"提供"的完整助手列表?

有没有办法在控制台中调用助手?我创建了一个应用程序,然后打开了控制台script/console.我试着像这样调用控制台上的一个助手:

>> entries_url
Run Code Online (Sandbox Code Playgroud)

但得到了:

NameError: undefined local variable or method `entries_url' for #<Object:0x349a4>
    from (irb):8
Run Code Online (Sandbox Code Playgroud)

ruby rest routing ruby-on-rails

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

如何在Ruby on Rails中创建锚点并重定向到此特定锚点

我正在尝试为我博客上的每条评论创建独特的锚点,这样一个人就可以获取一个锚点的网址并将其粘贴到浏览器中,这将自动加载页面并向下滚动到页面中评论开始的位置.

也许我正在以错误的方式解决这个问题,但我已经尝试过这个但是无济于事.

注释视图 - 失败1 - 当粘贴在浏览器中时,此链接不会向下滚动到所需位置

<%= link_to '#', :controller => 'posts', :action => 'show', :id => comment.post, :anchor => 'comment_' << comment.id.to_s %>
Run Code Online (Sandbox Code Playgroud)

注释控制器 - 失败2 - 在浏览器中更正URL但没有滚动发生它只是停留在页面顶部

redirect_to :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_' + @comment.id.to_s
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我会非常感激:)

更新:下面的解决方案几乎可以工作,但是我提出了以下URL,如果我点击它就不会滚动到它.

#ie http:// localhost:3000/posts/please-work

ruby anchor ruby-on-rails hyperlink page-jump

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

通过可能为nil的属性对ruby对象数组进行排序

我有一个对象数组,我需要通过一个可以是整数或零的位置属性进行排序,我需要将nil位置的对象放在数组的末尾.现在,我可以强制该位置返回一些值而不是nil,以便array.sort不会失败,但如果我使用0作为默认值,那么它将这些对象放在排序的前面.这种方法最好的方法是什么?我应该将nil值设置为一些"几乎"始终保证最终的可笑数字吗?或者是否有其他方法可以使array.sort方法将nil属性对象放在数组的末尾?代码如下所示:

class Parent
  def sorted_children
     children.sort{|a, b| a.position <=> b.position}
  end
end

class Child
  def position
    category ? category.position : #what should the else be??
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我把'else'变成1000000000,那么它很可能会把它们放在数组的末尾,但我不喜欢这个解决方案,因为它是任意的

ruby arrays sorting

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

从类对象获取类位置

我有一堆代码要看,现在是调试时间.由于我从未成为Ruby调试器的粉丝,因此我正在寻找一种通过代码并阅读它的方法.

我想要做的是获取定义加载类的文件的位置:

Foo::Bar.create(:param) # how can I know file location in runtime?
Run Code Online (Sandbox Code Playgroud)

对于规模较小,组织较好的项目,我只会搜索,class Bar但这里不可能,因为有很多类命名Bar,更糟糕的是,其中一些属于同一名称空间.我知道,等待发生的麻烦.

注意:我使用的是Ruby 1.8.7.

ruby

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

如何按降序按值排序哈希并在ruby中输出哈希?

output.sort_by {|k, v| v}.reverse
Run Code Online (Sandbox Code Playgroud)

和钥匙

h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
=> {"a"=>1, "c"=>3, "b"=>2, "d"=>4}

Hash[h.sort]
Run Code Online (Sandbox Code Playgroud)

现在我有这两个.但我正在尝试按值降序排序哈希,以便它返回

=> {"d"=>4, "c"=>3, "b"=>2, "a"=>1 }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑:让我发布整个代码.

def count_words(str)
  output = Hash.new(0)
  sentence = str.gsub(/,/, "").gsub(/'/,"").gsub(/-/, "").downcase
  words = sentence.split()
  words.each do |item|
    output[item] += 1 
  end
  puts Hash[output.sort_by{ |_, v| -v }]
  return Hash[output.sort_by{|k, v| v}.reverse]
end
Run Code Online (Sandbox Code Playgroud)

ruby sorting hash ruby-on-rails

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

ruby - bundle install/update太慢了

我刚刚在虚拟机中运行的虚拟ubuntu 12.04 32bit上安装了RVM,Ruby,Rails等.现在我遇到了第一个rails项目bundle installbundle update需要很长时间的问题.即使我用rails创建一个新项目(包括bundle install).

我只使用标准宝石:

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

group :development do
  gem 'sqlite3', '1.3.5'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

 gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2' …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails bundler

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