小编Sim*_*tti的帖子

黄瓜+ webrat + selenium,如何忽略隐藏文字?

我正在使用Cucumber,webrat和selenium来测试Web应用程序.我用" 我应该看到"某些东西来验证变化.但是,在许多地方,要验证的文本只会从隐藏更改为可见(这可能是由于从自身或其祖先中删除了'隐藏'类).在这种情况下,上述测试实际上并未验证更改.我试图使用'response.should_not have_tag("div#myId.hidden")',这不起作用.推荐的测试方法是什么?

环境:黄瓜0.3.11,selenium-client 1.2.17,webrat 0.6.0

谢谢.

selenium ruby-on-rails webrat cucumber

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

使用给定对象查找数据库中的下一个ActiveRecord模型对象

我有一个ActiveRecord模型对象@gallery,它表示Galleries MYSQL表中的一行.有没有办法让我向@gallery表格中的下一个画廊对象提供id?

对我来说,显而易见的方法是:

@galleries = Gallery.find(:all)
index = @galleries.index(@gallery)

@nextgallery = @galleries[index+1]
Run Code Online (Sandbox Code Playgroud)

但后来我必须nilsafe这个,我不必要另一个DB调用来获取所有记录.还有其他出路吗?

ruby activerecord ruby-on-rails

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

是否有红宝石功能!(val).nil ??

我经常发现自己这样做:

!(val).nil?
Run Code Online (Sandbox Code Playgroud)

如果有类似的方法,我的代码会更漂亮

val.exists?
Run Code Online (Sandbox Code Playgroud)

有类似的东西吗?

ruby

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

Rails rack 1.0错误

我尝试启动脚本/服务器时出现此错误:

/opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems.rb:827:in `report_activate_error': RubyGem version error: rack(1.0.0 not ~> 1.0.1) (Gem::LoadError)
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems.rb:261:in `activate'
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems.rb:68:in `gem'
 from /opt/ruby1.8/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller.rb:34
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
 from /opt/ruby1.8/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
 from /opt/ruby1.8/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
 from /opt/ruby1.8/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
 from /opt/ruby1.8/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:2
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
 from /opt/ruby1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
 from script/server:3
Run Code Online (Sandbox Code Playgroud)

这很烦人,因为我做了:

Successfully installed rack-1.1.0
1 gem installed
Installing ri documentation for rack-1.1.0...
Installing RDoc documentation for rack-1.1.0...
Run Code Online (Sandbox Code Playgroud)

但它总是说错误.我有Rails 2.3.5,但我不认为错误是Rails相关,但更像是我的服务器相关的大声笑.

感谢帮助!

gem rack ruby-on-rails

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

在ruby中省略一个链接

我想把遗漏"..."作为我截断的红宝石字符串的链接.这就是我所拥有的:

  <%= truncate(testimony.testimony, :length => 125, :omission => (link_to "...", testimony)) %><br />
Run Code Online (Sandbox Code Playgroud)

但它这样做:

Etiam porta sem malesuada magna mollis euismod. Aenean lacinia bibendum nulla sed consectetur<a href="/testimonies/1">...</a>
Run Code Online (Sandbox Code Playgroud)

而不是使实际......链接显示代码.请参阅:http://cl.ly/4Wy3获取屏幕截图.

谢谢!

ruby ruby-on-rails

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

订购和限制

我需要做以下查询:

SELECT * FROM "specimens" ORDER BY distribution_sheet_id DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我已经把:

<%=  Specimen.last(:order => :distribution_sheet_id).id  %>
Run Code Online (Sandbox Code Playgroud)

我喜欢输出'limit 10'而不是限制1.我认为它是.last,但是我可以用其他方式表达它来限制10.

谢谢

ruby ruby-on-rails

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

为Rails 2.3和Rspec设置Capybara

我在使用Rspec 1.3的rails 2.3.8应用程序中设置capybara(0.4.1.2)时遇到一些麻烦.从安装capybara说明中,我插入了以下行:

require 'capybara/rspec' 
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个遗漏的常数错误.好像它正在寻找一个没有加载的类'RSpec'(我猜这是一个RSpec 2/Rails 3的东西).

那么如何让Rspec识别出rails 2.3下的水豚呢?我应该使用早期版本的capy吗?

PS.这是回溯的片段:

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|443| in `load_missing_constant': uninitialized constant RSpec (NameError)

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|80| in `const_missing_not_from_s3_library'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb|206| in `const_missing'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|92| in `const_missing'

||  from /Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/capybara-0.4.1.2/lib/capybara/rspec.rb:4


/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/rails-2.3.5/lib/rails/gem_dependency.rb|119| Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|443| in `load_missing_constant': uninitialized constant RSpec (NameError)

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|80| in `const_missing_not_from_s3_library'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb|206| in `const_missing'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|92| in `const_missing'

|   from /Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/capybara-0.4.1.2/lib/capybara/rspec.rb:4

/Users/rafe/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb|31| in `gem_original_require'

/Users/rafe/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb|31| in `require'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|158| in `require'

||  from /Users/rafe/cmi/lci/branches/forums/spec/spec_helper.rb:12
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails capybara ruby-on-rails-2

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

将Net :: IMAP电子邮件写入mikel/mail email

将使用Net::IMAP库提取的电子邮件传递给Mail使用mikel/mailgem 定义的对象时遇到问题.

我收到邮件:

data = imap.uid_fetch(1, "BODY[]")
Run Code Online (Sandbox Code Playgroud)

但是我应该如何将它放入Mail.read约定?

mail = Mail.read(data.to_s)
Run Code Online (Sandbox Code Playgroud)

似乎得到了Errno::ENAMETOOLONG: File name too long.它将邮件正文理解为文件名.

有任何想法吗?

ruby

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

问题启动Rails服务器

刚开始使用Rails.我在windows vista上,从http://rubyinstaller.org/安装了最新版本的ruby ,一切顺利.

ruby -v
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
Run Code Online (Sandbox Code Playgroud)

我跑:

gem update --system
gem sources -a http://gemcutter.org
gem install rails
Run Code Online (Sandbox Code Playgroud)

没有错误报告.

rails --v
Rails 3.1.0
Run Code Online (Sandbox Code Playgroud)

在此之后,我为我的Rails项目创建了一个文件夹,我在里面创建了一个新的Rails应用程序,如下所示:

rails new test
cd test
bundle install
Run Code Online (Sandbox Code Playgroud)

(再次没有报错)

但是当我跑步时rails server我得到这个错误:

rails server
?[31mCould not find rails-3.1.0 in any of the sources?[
?[33mRun `bundle install` to install missing gems.?[0m
Run Code Online (Sandbox Code Playgroud)

我尝试再次运行bundle但没有再次成功...在此之后,如果我再次键入rails -v我会得到与以前相同的错误.我必须关闭Windows控制台并重新打开rails -v才能重新开始工作!

有没有人经历过这个?!你能帮我吗?

谢谢!!!

根据要求,gemfile内容为:

source 'http://rubygems.org'

gem 'rails', '3.1.0'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git' …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails ruby-on-rails-3

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

Rails、ActiveRecord、PostgreSQL 使用正则表达式在字符串中搜索单词

我有一个使用 PostgreSQL 作为数据库的 Rails 4.1.x 应用程序。

我需要查询一列,以尝试在字符串的一部分上进行区分大小写的匹配,同时搜索单词的边界。正则表达式应该与 /keyword\b/i 内联,因此使用 %keyword% 不会削减它。我知道 postgres 支持正则表达式,但是我无法让它正常工作。我目前有以下内容:

Page.where("title ~* 'keyword/\b'").all
generages the following:
SELECT "pages".* FROM "pages"  WHERE (title ~* 'keyword')
Run Code Online (Sandbox Code Playgroud)

目前,这不会返回任何内容,即使我知道的记录包含“关键字”一词,我做错了什么?或者更确切地说,我该怎么做才能达到我的预期结果。

regex string postgresql ruby-on-rails rails-activerecord

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