我的客户要求我将第三方API集成到他们的Rails应用程序中.唯一的问题是API使用SOAP.Ruby基本上放弃了SOAP,转而使用REST.它们提供了一个显然适用于Java-Ruby桥接器的Java适配器,但是如果可能的话,我们希望将它全部保存在Ruby中.我看了一下soap4r,但它的名声似乎有些不好.
那么将SOAP调用集成到Rails应用程序的最佳方法是什么?
Errno::ENOENT: No such file or directory即使文件存在,以下内容也会失败:
open('~/some_file')
Run Code Online (Sandbox Code Playgroud)
但是,我可以这样做:
open(File.expand_path('~/some_file'))
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
open将波形符处理为指向主目录?File.expand_path吗?我有一个包含一些字符串值的Ruby数组.我需要:
现在我的解决方案看起来像这样:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
Run Code Online (Sandbox Code Playgroud)
是否有一个Array或Enumerable方法将select和map组合成一个逻辑语句?
在我当前的rails程序中,当我使用类似的东西
user = User.find(10)
Run Code Online (Sandbox Code Playgroud)
当没有ID = 10的用户时,我会有例外:
ActiveRecord::RecordNotFound: Couldn't find User with ID=10
Run Code Online (Sandbox Code Playgroud)
我可以获得nil而不是提出异常,所以当我做以下事情时:
unless user = Challenge.find(10)
puts "some error msg"
end
Run Code Online (Sandbox Code Playgroud)
我只想在没有记录的情况下获得nil并且我不想使用begin/rescue
谢谢
Factory Girl介绍描述了FactoryGirl.build()和之间的区别FactoryGirl.create():
# Returns a User instance that's not saved
user = FactoryGirl.build(:user)
# Returns a saved User instance
user = FactoryGirl.create(:user)
Run Code Online (Sandbox Code Playgroud)
我仍然不明白两者之间的实际差异.有人可以给出一个例子,你想要使用一个而不是另一个吗?谢谢!
我不能让capybara与rspec合作.它给了我这个错误:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x16529f8 @example=nil>
Run Code Online (Sandbox Code Playgroud)
我知道有很多关于此的帖子,但没有解决方案对我有用.他们中的大多数涉及的规格不在/ spec/features中 - 我的是.
首先是错误:
$bundle exec rspec spec
F
Failures:
1) security signs users in
Failure/Error: visit "/sessions/new"
NoMethodError:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x16529f8 @example=nil>
# ./spec/features/security_spec.rb:4:in `(root)'
Finished in 0.006 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/features/security_spec.rb:3 # security signs users in
Run Code Online (Sandbox Code Playgroud)
我认为重要的是要注意,起初我使用URL Helper'new_sessions_path'并且它一直给我一个错误undefined local variable or method 'new_sessions_path'.我知道这是有效的,因为:
$ rake routes
logout_sessions GET /sessions/logout(.:format) sessions#logout
sessions POST /sessions(.:format) sessions#create
new_sessions GET /sessions/new(.:format) sessions#new
contracts POST /contracts(.:format) …Run Code Online (Sandbox Code Playgroud) 我从rspec的2.99升级到3.0.3 RSPEC和具有转换实例方法使用allow_any_instance_of,但还没有想出如何存根类方法.我有这样的代码:
module MyMod
class Utils
def self.find_x(myarg)
# Stuff
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的rspec 2测试做到了这一点:
MyMod::Utils.stub(:find_x).and_return({something: 'testing'})
Run Code Online (Sandbox Code Playgroud)
什么是Rspec 3的做法?
我从 ruby 2.7.1 更新到 3.1.1,然后删除 Gemfile.lock 并运行bundle update(它位于开发分支上,所以如果这是一个坏主意,我可以扔掉它,我只是想看看它是否有效)。
bundle update成功了,但是当我启动服务器时:
rails s
=> Booting Puma
=> Rails 7.0.2.2 application starting in development
=> Run `bin/rails server --help` for more startup options
Exiting
/Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:345:in `block in revive_hash'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `each_slice'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:343:in `revive_hash'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:167:in `visit_Psych_Nodes_Mapping'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/visitor.rb:30:in `visit'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/visitor.rb:6:in `accept'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:35:in `accept'
from /Users/st/.rbenv/versions/3.1.1/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:345:in `block in …Run Code Online (Sandbox Code Playgroud)