我在bash提示符中使用以下行安装了pry和相关的gem:
gem install pry-plus --no-ri --no-rdoc
Run Code Online (Sandbox Code Playgroud)
该命令报告了成功的gem安装.
我发现的所有说明都说安装pry之后我可以通过输入prybash命令来获得pry提示符.但是,实际结果是bash: pry: command not found
which pry报告no pry in (...)省略号为$ PATH的位置.相比之下,which rake报告/local/tbh/rbenv/shims/rake和which gem报告/local/tbh/rbenv/shims/gem
为什么pry的命令不是由gem install创建的?我怎样才能让它按设计工作?
(我在Scientific Linux下使用Ruby 1.9.3和rbenv(不是RVM)作为虚拟环境.)
在Ruby中,常量查找受嵌套影响,方法保留其嵌套.
例如,如果我有这些模块:
module A
X = 1
end
module B
X = 2
end
module Foo
end
Run Code Online (Sandbox Code Playgroud)
我可以定义Foo.a一个嵌套的方法[A, Foo]:
module Foo
module ::A
Module.nesting #=> [A, Foo]
def Foo.a
X
end
end
end
Foo.a #=> 1
Run Code Online (Sandbox Code Playgroud)
以及Foo.b嵌套的方法[Foo, B]:
module B
module ::Foo
Module.nesting #=> [Foo, B]
def Foo.b
X
end
end
end
Foo.b #=> 2
Run Code Online (Sandbox Code Playgroud)
如果我定义Foo::X:差异变得明显:
Foo::X = 3
Foo.a #=> 1 <- still resolves to A::X
Foo.b #=> 3 …Run Code Online (Sandbox Code Playgroud) 我想向 API 发送 POST 请求。这是我的代码:
conn = Faraday.new(url: BASE) do |faraday|
faraday.response :logger
faraday.request :url_encoded
faraday.headers['Content-Type'] = 'application/json'
faraday.headers["Authorization"] = "bearer #{AppConfig.instance.access_token}"
faraday.adapter Faraday.default_adapter
end
form_data = {a: 1, b: 2}
conn.post("/api/test", form_data)
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
conn = Faraday.new(url: BASE) do |faraday|
faraday.response :logger
faraday.request :url_encoded
faraday.headers['Content-Type'] = 'application/json'
faraday.headers["Authorization"] = "bearer #{AppConfig.instance.access_token}"
faraday.adapter Faraday.default_adapter
end
form_data = {a: 1, b: 2}
conn.post("/api/test", form_data)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
conn.post("/api/test", form_data.to_json)
Run Code Online (Sandbox Code Playgroud)
但它也不起作用。
鉴于n,我想创建一个从0到 的数组n:
10.make_array #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
如果是负数,它也应该起作用n:
-10.make_array #=> [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10]
Run Code Online (Sandbox Code Playgroud)
我已经编写了这段代码,但我认为我让它变得比必要的更复杂(它不适用于负数):
class Fixnum
define_method(:make_array) do
my_array = []
self.times() do |count|
self.>(0)
my_array.push(count)
end
my_array.push(self)
my_array
end
end
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法或捷径来做同样的事情,以及关于如何处理负数的任何建议?
我不明白Sheep = Class.new下面这段代码中的部分.
module Fence
Sheep = Class.new do
def speak
"Bah."
end
end
end
def call_sheep
Fence::Sheep.new.speak
end
Run Code Online (Sandbox Code Playgroud)
到底是做什么的?
我有一个2.4版本的API。我只是碰巧拥有它,而且没有办法重命名它。我该如何在 Rails 中处理它?我无法创建名称中带有点的命名空间:
module Api::V2.4
# ...
end
Run Code Online (Sandbox Code Playgroud) 我想在我的mongodb数据库中列出所有具有相应集合的模型?我正在使用mongoidgem for MongoDB.
我会尝试这样的事情
ActiveRecord::Base.send :subclasses
哪个工作正常,但我没有使用ActiveRecord.
给出以下方法,它接受两个关键字参数begin和end:
def make_range(begin: 0, end: -1)
# ...
end
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地调用这个方法:
make_range(begin: 2, end: 4)
Run Code Online (Sandbox Code Playgroud)
但是在实现方法时我如何使用关键字参数,因为两者都恰好是Ruby 关键字?
这显然不起作用:
def make_range(begin: 0, end: -1)
begin..end
end
Run Code Online (Sandbox Code Playgroud)
请注意,这只是一个示例,该问题适用于所有关键字,而不仅仅是begin和end.
我需要连接到 HTTP 服务器并订阅服务器发送事件 (SSE)源。
我发现支持这一点的唯一宝石是em-eventsource(严重损坏)和sse-client-ruby,它似乎是一个裸露的片段,需要未指定的额外管道才能工作。
还有其他我可以使用的 Ruby gem 吗?或者,有人可以提供一个在 Ruby 中使用 SSE 事件的简单的本地示例吗?
我有这个代码
File.open(file_name, 'r') { |file| file.read }
Run Code Online (Sandbox Code Playgroud)
但是Rubocop警告:
罪行:
Style/SymbolProc:
&:read作为参数传递open而不是块.
你怎么做到这一点?