Gem.bin_path('cucumber', 'cucumber')
Run Code Online (Sandbox Code Playgroud)
将返回二进制/可执行文件的路径.似乎没有这样的函数来返回库路径.在这种情况下,理想情况下会返回:
/home/hedge/.rvm/gems/ruby-1.9.2-p136@bbb-bdd-meta-bdd/gems/cucumber-0.10.0/lib
Run Code Online (Sandbox Code Playgroud)
我错过了什么或者是否有一种简单/一种方法来获取这些信息?
更新:请不要CLI或非stdlib建议.
在过滤器之前的应用程序控制器
class ApplicationController < ActionController::Base
before_filter :authenticate
def authenticate
# How do we know which controller and action was targetted?
end
end
Run Code Online (Sandbox Code Playgroud) 这与将一个Hash of Arrays转换为Ruby中的Hashes数组相反.
优雅地和/或有效地将散列数组转换为散列值,其中值是所有值的数组:
hs = [
{ a:1, b:2 },
{ a:3, c:4 },
{ b:5, d:6 }
]
collect_values( hs )
#=> { :a=>[1,3], :b=>[2,5], :c=>[4], :d=>[6] }
Run Code Online (Sandbox Code Playgroud)
这个简洁的代码几乎可以工作,但是在没有重复的情况下无法创建数组:
def collect_values( hashes )
hashes.inject({}){ |a,b| a.merge(b){ |_,x,y| [*x,*y] } }
end
collect_values( hs )
#=> { :a=>[1,3], :b=>[2,5], :c=>4, :d=>6 }
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但你能写一个更好的版本吗?
def collect_values( hashes )
# Requires Ruby 1.8.7+ for Object#tap
Hash.new{ |h,k| h[k]=[] }.tap do |result|
hashes.each{ |h| h.each{ |k,v| result[k]<<v } }
end …Run Code Online (Sandbox Code Playgroud) 我认为通知将是它自己的资源,并且has_many, through与用户模型有关系,并且连接表表示关联.
具有许多通知的用户是显而易见的,然后通知将具有许多用户,因为将存在与许多用户相关联的多个标准化通知(评论通知,后续通知等).
除此设置外,我不确定如何根据应用程序中的某些事件触发通知创建.我也不确定如何设置路由 - 它是自己独立的资源还是嵌套在用户资源中?如果有人可以对此进行扩展,我会发现它非常有用.
最后,ajax轮询可能会改善这样的功能.
可能有一些我缺少的东西,所以请填写它,以便它是一个很好的一般资源.
ruby notifications ruby-on-rails push-notification ruby-on-rails-3
我正在尝试使用C#来使用REST API.API创建者提供了PHP,Ruby和Java的示例库.我被挂在它的一部分,我需要生成一个HMAC.
以下是它们提供的示例库中的完成方式.
PHP
hash_hmac('sha1', $signatureString, $secretKey, false);
Run Code Online (Sandbox Code Playgroud)
红宝石
digest = OpenSSL::Digest::Digest.new('sha1')
return OpenSSL::HMAC.hexdigest(digest, secretKey, signatureString)
Run Code Online (Sandbox Code Playgroud)
Java的
SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), HMAC_SHA1_ALGORITHM);
Mac mac = null;
mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
mac.init(signingKey);
byte[] bytes = mac.doFinal(signatureString.getBytes());
String form = "";
for (int i = 0; i < bytes.length; i++)
{
String str = Integer.toHexString(((int)bytes[i]) & 0xff);
if (str.length() == 1)
{
str = "0" + str;
}
form = form + str;
}
return form;
Run Code Online (Sandbox Code Playgroud)
这是我在C#中的尝试.它不起作用.更新:下面的C#示例工作得很好.我发现真正的问题是由于我的换行符中的一些跨平台差异 …
我刚刚读到了sendRuby中的内容,在查看此代码时我仍然感到困惑(它来自测验但是过去截止日期)
x = [1,2,3]
x.send :[]=,0,2
x[0] + x.[](1) + x.send(:[],2)
Run Code Online (Sandbox Code Playgroud)
我明白第一行给x分配一个数组然后我不明白什么:[] = ,0,2根本不知道我不明白为什么需要发送我不知道什么x.[](1)做和x.send(:[],2)做到最后线
我真的很困惑,我无法在网上找到这些信息.
我发现了发送的内容,但我仍然有点困惑,并且对这个代码整体感到很困惑.
我已经在这个领域做了一些研究,但没有找到任何解决方案.我有一个网站,在那里对facebook进行异步ajax调用(使用JSONP).我正在使用VCR在Ruby端记录我的所有HTTP请求,所以我认为将这个功能用于AJAX调用也很酷.
所以我玩了一下,并提出了代理尝试.我正在使用PhantomJS作为Capybara内部集成的无头浏览器和恶作剧者.Poltergeist现在配置为使用这样的代理:
Capybara.register_driver :poltergeist_vcr do |app|
options = {
:phantomjs_options => [
"--proxy=127.0.0.1:9100",
"--proxy-type=http",
"--ignore-ssl-errors=yes",
"--web-security=no"
],
:inspector => true
}
Capybara::Poltergeist::Driver.new(app, options)
end
Capybara.javascript_driver = :poltergeist_vcr
Run Code Online (Sandbox Code Playgroud)
出于测试目的,我编写了一个基于WEbrick的代理服务器,它集成了VCR:
require 'io/wait'
require 'webrick'
require 'webrick/httpproxy'
require 'rubygems'
require 'vcr'
module WEBrick
class VCRProxyServer < HTTPProxyServer
def service(*args)
VCR.use_cassette('proxied') { super(*args) }
end
end
end
VCR.configure do |c|
c.stub_with :webmock
c.cassette_library_dir = '.'
c.default_cassette_options = { :record => :new_episodes }
c.ignore_localhost = true
end
IP = '127.0.0.1'
PORT = 9100
reader, writer …Run Code Online (Sandbox Code Playgroud) 如何使用Ruby计算数字数组的中位数?
我是初学者,在学习的过程中,我正努力坚持已经教过的东西.因此,我发现的其他问题超出了我的范围.
这是我的笔记和我的尝试:
取这两个中间数的平均值.
def median(array)
ascend = array.sort
if ascend % 2 != 0
(ascend.length + 1) / 2.0
else
((ascend.length/2.0) + ((ascend.length + 2)/2.0) / 2.0)
end
end
Run Code Online (Sandbox Code Playgroud)我正在学习rails并遵循这个主题.我坚持使用这种to_proc方法.我认为符号只是字符串的替代品(它们就像字符串,但在内存方面更便宜).如果还有其他我想念的符号,那么请告诉我.请以简单的方式解释什么to_proc方法和用途.
我正在使用osx 10.8.2安装ruby 2.0和....当试图运行"sudo gem install rails"时得到了这个
$ sudo gem install rails
ERROR: Loading command: install (LoadError)
cannot load such file -- openssl
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
我有红宝石1.9.x和rails 3.2.x之前工作正常