标签: ruby

在Ruby中使用SOAP的最佳方法是什么?

我的客户要求我将第三方API集成到他们的Rails应用程序中.唯一的问题是API使用SOAP.Ruby基本上放弃了SOAP,转而使用REST.它们提供了一个显然适用于Java-Ruby桥接器的Java适配器,但是如果可能的话,我们希望将它全部保存在Ruby中.我看了一下soap4r,但它的名声似乎有些不好.

那么将SOAP调用集成到Rails应用程序的最佳方法是什么?

ruby soap ruby-on-rails

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

如何打开相对于主目录的文件

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)

我有两个问题:

  1. 为什么不open将波形符处理为指向主目录?
  2. 有比这更光滑的方式File.expand_path吗?

ruby

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

88
推荐指数
6
解决办法
8万
查看次数

在Ruby中,是否有一个结合了'select'和'map'的Array方法?

我有一个包含一些字符串值的Ruby数组.我需要:

  1. 找到与某个谓词匹配的所有元素
  2. 通过转换运行匹配元素
  3. 将结果作为数组返回

现在我的解决方案看起来像这样:

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组合成一个逻辑语句?

ruby

88
推荐指数
6
解决办法
5万
查看次数

当没有记录时,使用nil查找()

在我当前的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

谢谢

ruby activerecord ruby-on-rails ruby-on-rails-3

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

FactoryGirl中的构建方法和创建方法有什么区别?

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)

我仍然不明白两者之间的实际差异.有人可以给出一个例子,你想要使用一个而不是另一个吗?谢谢!

ruby factory-bot

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

在rails中使用RSpec和Capybara时未定义的方法`visit'

我不能让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)

ruby rspec ruby-on-rails capybara

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

rspec 3 - 存根类方法

我从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 rspec ruby-on-rails rspec3

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

Visit_Psych_Nodes_Alias:未知别名:默认(Psych::BadAlias)

我从 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)

ruby ruby-on-rails

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

红宝石中"不"和"!"之间的区别

我记得在那里阅读not!进行了不同的评估,我在文档中找不到它.他们是同义词吗?

ruby boolean-logic

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