小编Sha*_*ell的帖子

什么是良好的代码测试比率?

我正在使用RSpec编写测试.

你怎么看,是一个很好的代码测试比例?

ruby rspec ruby-on-rails

5
推荐指数
2
解决办法
3939
查看次数

将支付网关(基于activemerchant)与spree集成

我正在尝试将payu.in支付网关集成到我的rails应用程序中.我已将他们的宝石集成到应用程序中,但是当我去的时候

/管理/ payment_methods /新

我无法在提供商选项下看到支付网关.

我已按照http://guides.spreecommerce.com/payment_gateways.html中规定的步骤进行操作

我的app/models/spree/gateway/payu.rb看起来像这样:

module Spree
  class Gateway::Payu < Gateway
    def provider_class
      ActiveMerchant::Billing::Integrations::PayuIn
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails payment-gateway spree ruby-on-rails-3.2

5
推荐指数
1
解决办法
2669
查看次数

Capybara has_field找不到has_selector找到的字段

我目前正在为Rails应用程序中的消息传递系统编写Cucumber功能.这是我的一个步骤.

Then(/^they should see the message displayed in their language$/) do
  id = "message_to_#{@family.id}"
  expect(page).to have_selector("textarea##{id}")
  save_and_open_page
  expect(page).to have_field(id, type: :textarea)
end
Run Code Online (Sandbox Code Playgroud)

第一个断言通过,但第二个断言失败.当我检查save_and_open_page创建的标记时,会出现以下元素:

<textarea cols="22" disabled="disabled" id="message_to_13" name="body" placeholder="Hallo, Ich bin sehr interessiert an deinem Profil. Würdest du gerne mit mir in Kontakt treten?" rows="7"></textarea>
Run Code Online (Sandbox Code Playgroud)

显示第二个测试的错误消息是:

expected to find field "message_to_13" but there were no matches. Also found "", which matched the selector but not all filters. (Capybara::ExpectationNotMet)
Run Code Online (Sandbox Code Playgroud)

我在这里撕扯我的头发,以了解为什么Capybara可以使用have_selector找到明显存在的元素,但不能使用have_field?

ruby-on-rails cucumber capybara

5
推荐指数
1
解决办法
6801
查看次数

Ruby:如何在fixture中配置枚举?

鉴于此类:

class User < ActiveRecord::Base

enum permission: {
    permission_user: 1,
    permission_staff: 2,
    permission_manager: 3,
    permission_admin: 4,
    permission_super_admin: 5
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个看起来像这样的夹具:

testuser1:
  id: 1
  username: sam
  permission: :permission_staff
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多语法变体,但没有找到有用的东西.结果user.permission是nil或0.我知道枚举是相对较新的添加.可以这样做吗?

ruby enums unit-testing ruby-on-rails fixtures

5
推荐指数
1
解决办法
1282
查看次数

Params becomming nil

有一些旧代码在某种情况下会修改params.我相信它之前有效(不是100%).我们现在将params设置为nil,无论条件是否满足.

罪魁祸首是在条件之内,我执行了params = tmp.dup.即使条件为假,也会导致更新操作出错.

我能够通过最小的测试重新创建

(Rails 2.3.5)

rails bug;
cd bug;

script/generate scaffold bug name:string;
rake db:create;
rake db:migrate;
Run Code Online (Sandbox Code Playgroud)

编辑apps/controllers/bugs_controller.rb添加到更新操作的开头

l_p = params.dup

if (false)

  params = l_p.dup  # NOT REACHED

end
Run Code Online (Sandbox Code Playgroud)

脚本/服务器WEBrick -p 5001

浏览到http:// localhost:5001/bugs 创建一个新的bug编辑错误提交

controller ruby-on-rails params

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

Rails基于关联顺序

我有一个问题和解决方案模型.问题有很多解决方案,解决方案属于问题.

我需要得到最近解决的问题,这意味着,获得最后的X解决方案并解决它的问题.我很确定有一种方法可以用named_scopes做到这一点,但我无法弄明白.

任何帮助真的很感激:-)

谢谢,

尼古拉斯·霍克一世

named-scope ruby-on-rails

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

脱机gem依赖项

不幸的是,当我在工作时,我正在开发一个无法连接到互联网的网络.所以我一直在从rubygems.org下载我需要的每个gem,然后通过flashdisk将它们复制到内部网络.这工作正常,除非我需要一个具有其他gem依赖关系的gem我必须单独下载这些并且它是缓慢而乏味的.

有没有办法下载一个宝石及其所有依赖的宝石进行离线安装?我在互联网上有一台计算机,我可以安装宝石,我希望我可以下载我需要的宝石,它会自动安装依赖项,然后我可以复制到内部网络.但是gem install一旦安装完毕,似乎不会留下.gem文件.

gem ruby-on-rails

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

Rails 3.1的Sqlite3 gem

我想用命令创建myApp

rails new myApp

但它给出了一个错误:

使用本机扩展安装sqlite3(1.3.4)Gem :: Installer :: ExtensionBuildError:错误:无法构建gem本机扩展.

/usr/bin/ruby1.8 extconf.rb检查sqlite3.h ...没有sqlite3.h丢失.尝试'port install sqlite3 + universal'或'yum install sqlite3-devel'并检查共享库搜索路径(sqlite3共享库所在的位置). *extconf.rb失败*由于某些原因无法创建Makefile,可能缺少必要的库和/或标头.检查mkmf.log文件以获取更多详细信息.您可能需要配置选项.

提供的配置选项: - with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir}/include --with-opt-lib - without-opt-lib = $ {opt-dir}/lib --with-make-prog --without-make-prog --srcdir =.--curdir --ruby =/usr/bin/ruby​​1.8 --with-sqlite3-dir --without-sqlite3-dir --with-sqlite3-include --without-sqlite3-include = $ {sqlite3-dir}/include --with-sqlite3-lib --without-sqlite3-lib = $ {sqlite3-dir}/lib --enable-local --disable-local

Gem文件将保留在/usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.4中以供检查.结果记录到/usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out安装sqlite3(1.3.4)时出错,Bundler无法继续.gem install sqlite3 -v '1.3.4'在捆绑之前确保成功.

我该怎么办?谢谢

ruby sqlite ruby-on-rails

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

rbenv - 编译Ruby 2.1.1时出错

我在使用DigitalOcean Droplet编译Ruby时遇到问题.

rbenv 0.4.0-97-gfe0b243

Ubuntu 14.04 LTS

Linux bashman 3.13.0-24-generic#46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

rbenv install 2.1.1
Run Code Online (Sandbox Code Playgroud)

给我:https://gist.github.com/astropanic/e4d3a3602612b3c21636

失败似乎与:

compiling readline.c
readline.c: In function ‘Init_readline’:
readline.c:1977:26: error: ‘Function’ undeclared (first use in this function)
rl_pre_input_hook = (Function *)readline_pre_input_hook;
^
readline.c:1977:26: note: each undeclared identifier is reported only once for each function it appears in
readline.c:1977:36: error: expected expression before ‘)’ token
rl_pre_input_hook = (Function *)readline_pre_input_hook;
^
readline.c: At top level: …
Run Code Online (Sandbox Code Playgroud)

ruby compiler-errors rbenv digital-ocean

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

如何传递Rails的cycle()一组值来循环?

我想循环方法来获取我在运行中编译的值数组,但它似乎正在解释它而不是我所希望的.

(在这个例子中它是一个静态数组,但我希望它工作,以便我可以使用不同构造的数组)

- some_array = ['one', 'two', 'three']
- colors.each do |color|
  %a{ :name => color, :class => "#{cycle(some_array)}" }
Run Code Online (Sandbox Code Playgroud)

这适用于每个元素的类:

"three"] "two", ["one",
Run Code Online (Sandbox Code Playgroud)

......看起来好像在调用to_s数组或其他东西.

我该怎么做呢?

ruby-on-rails

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