为什么我们可以在ruby函数中修改复杂的参数而不是标量?

这个问题吸引了很多有用的答案,也引起了很多分歧。到目前为止,我没有在任何答案中看到任何解释以下内容的东西: ruby-e def fx x=7端;a=3;fa;打印a打印3 ruby-e def fx[0]=7端;a=[3];fa;打印a[0]打印7 根据经验,在我看来,标量对象和更复杂的对象(如散列和数组)之间存在某种区别,标量通过值传递,复杂对象通过引用传递。这类似于C的语义 我的理解是ruby中的一切都是对象,前面问题的答案中没有一个提到标量和复杂类型之间的区别。那么我的描述是不是错了,如

如何在Ruby中从命令行读取密码?

我在Windows机器上运行Ruby和MySQL 我有一些Ruby代码需要连接到MySQL数据库并执行select。要连接到数据库,我需要提供密码等 Ruby代码可以显示请求密码的提示,用户输入密码并点击Enter键。我需要的是密码,因为它是键入的,显示为一行星号 如何让Ruby在“dos框”中将键入的密码显示为一行星号?可怜人的解决方案: system "stty -echo" # read password system "stty echo" 或使用 这个库的目标读者是需要编写Ruby程

Ruby 有没有办法不用评估就可以做到这一点?

我看不到其他人在ruby中使用eval,所以我假设没有它也可以做到这一点。但我不知道怎么做 (1..9).each { |n| eval "user_#{n} = prefix << '_' << user_#{n} if user_#{n}" } (1..9)| eval“user_#{n}=prefix您可以使用ruby的define_方法动态定义一个方法 您可以将基于eval的语句替换为class\u eval中包含的define\u方法 但是,这取决于具

为什么在Ruby中使用require或autoload时必须插入Dir.pwd?

这对我来说似乎是Ruby 1.9的一个问题,但每当我尝试使用require“lib/mylibrary”Ruby请求或自动加载源代码时,都会出现“无需加载此类文件”错误。我总是需要插入Dir.pwd:require“#{Dir.pwd}/lib/mylibrary” 我到处都可以看到源代码,它们不需要查找当前的工作目录来包含源文件。我缺少什么?变量$LOAD\u PATH确定Ruby将检查要加载的文件的位置。从Ruby 1.9开始,默认情况下当前目录不在加载路径中,但是您可以使用require\

Ruby 从awesome_嵌套_集管理的树中删除节点的正确方法是什么?

目前尚不清楚如何从awesome_嵌套_集管理的树中正确删除节点或节点集 给定一个父节点和一个子节点,我尝试了 父、子、清除 但是,这会使树处于无法将子对象重新添加回父对象的状态 我是否必须显式地将所有lft、rgt和parent_id列清空?OP写道: 进一步的研究表明,如果我执行child.update\u属性(:parent\u id,nil)并重新加载父级和子级,这似乎是可行的 进一步的研究表明,如果我执行child.update\u属性(:parent\u id,nil)并重新加载父级

Ruby Capistrano error deploy.rb:警告:设置环境变量失败

从WinXP计算机运行Capistrano。从Beanstalk repo部署到Linux box 在我的Mac OS X 10.6机器上,使用完全相同的capfile和安装详细信息,一切都可以完美运行,但我无法在Win XP机器上正常运行 查看了deploy.rb的第95行和第104行,因为这两行似乎会导致一些问题,但无法找出任何答案。有点不知所措:-[ 部署尝试的确切日志为: C:\Documents and Settings\Owner\Desktop>cap dev deploy

将变量从Jenkins传递到Ruby脚本(Jenkins新手)

我已经在Jenkins中引入了一些脚本来证明概念,我想我希望我们所有的脚本都朝着这个方向发展。现在我保存了一个environment.rb文件和我的代码(watirwebdriver,cucumber),它告诉脚本我们正在测试哪个环境以及使用哪个浏览器(全局变量)。詹金斯使用rake启动脚本 我希望让用户通过Jenkins'choice'变量或类似变量选择环境和浏览器,然后将其传递给脚本。虽然我看到了Jenkins的框架,并为环境建立了一个选择列表,但我很难确定下一步是什么 我可以写enviro

将方法附加到ruby中受限上下文中的另一个类

有可能在有限的区域内将我自己的方法附加到另一个类上吗 如果是这样的话,有谁能给我展示一个更好的实践,或者它应该使用类似于deligate的方法来实现这一点 情况是这样的:在接收、生成和传递类B实例的类A中, 我想在那些bs上附加一些方法,而不让这些新方法在类A之外可以访问。这些方法被调用。您可以向任何对象添加方法,只影响该实例,而不影响创建该实例的整个类 some_object = Whatever.new other_object = Whatever.new class <<

在Ruby中匹配结束标记

为了学习Ruby,我从节点和一个简单的堆栈开始实现不同的数据结构。如果我将每个def与相应的end进行匹配,那么期望$end(EOF)但得到end会有很多错误。因此,我可以通过在类的末尾堆叠一些ends来修复它,但显然我不知道为什么会这样 require "Node" class Stack attr_accessor :top def size @size end def push(node) if node &

无法安装Rubygem“链接解析器”

我想创建一个聊天机器人,为此我想使用它,它基本上是一个引擎,可以在查看句子时找出单词之间的关系 我尝试使用以下方法安装了一个: gem install linkparser 而且: gem install linkparser -- --with-link-grammar="C:\Users\Gebruiker\Downloads\Linkparsergrammar\linkgrammar4r-0.0.3" 但是,我不断遇到以下错误: Temporarily enhancing PATH t

ruby源代码中的Range类?

在Ruby的源代码中哪里可以找到Range类的方法。我特别寻找最后一种方法。Ruby-VMRI 1.9.2您可以在这里找到Ruby源代码 它的根目录中有一个range.c 对于source中的最后一个实现,我认为它在这里: 就我个人而言,我更喜欢看的是,因为我发现它比YARV的可读性强得多。您正在查找的方法位于中,它只是@end实例变量的getter: attr_reader :end alias_method :last, :end @end实例变量是在中设置的。换句话说:最后一个方法总是返

Ruby LoadError:无法加载这样的文件--目录/文件名

我有一个像这样的文件结构 root |--lib |--root.rb |--extensions |--strings.rb 我希望能够在root.rb文件中使用string.rb中的方法 因此,我在root.rb文件的顶部添加了require“extensions/strings” 但是我得到LoadError:无法加载这样的文件扩展名/strings.rb错误 我如何避免这种情况 我用了jandot的解决方案 Dir[File.dirname_uufile_u+'

如何在Ruby 1.9中调试所需的代码

根据锡人的意见,我提出了一个新问题 原始问题如下: 我用来调试的原始代码: require 'debugger' debugger require 'thor' 这是一个两难的问题: 使用默认的-rdebug进行调试,我无法访问Rubygem的源代码 使用debuggergem进行调试,在调试之前,我必须require(我在上一个问题中尝试的方式,这是不可接受的,因为在我到达之前发生了一些重要的事情) 希望能找到一种调试方法。当需要rubygems时。与Ruby 1.9及更高版本的集成基本上是

Ruby 需要实施Watirgrid,

我想实现watirgrid,但我无法做到,每次我在控制器和提供者启动过程中遇到错误时,也就是在互联网上的所有示例中,它们都不起作用 任何人都可以帮助我实现这一点,一个完整的运行步骤的例子将是一个很大的帮助 我正在尝试以下代码: require 'rubygems' require 'watirgrid' require 'watir' require 'watir-webdriver' # setup a controller on port 12351 for your new grid c

Ruby for循环在分配数组值时给出Nil类错误

我有个问题。我正在为GoogleSketchUp编写一个插件,并尝试过滤掉数组值,然后将过滤后的值放入另一个数组中。这是这样做的: for z in 0..points.length points2[z]=points[z][1] end 其中点是双数组。有人能告诉我我做错了什么吗?这应该更好: points2 = points.map {|p| p[1]} 你做错了什么?我是for循环的粉丝,你应该使用函数式,aka。Ruby方式: points2 = points.map { |el

如何使用ruby中的HttpClient.get\u async发送BasicAuth?

我尝试了以下方法,但另一端似乎没有设置基本的_身份验证标志,并且出现了“401 Unauthorized”错误 client = HTTPClient.new client.set_auth(nil, "user", "secret") client.get_async(full_url, {:id => hash[:id]}, {username: "user", password: "secret"}) # HOWEVER THIS WORKS, non-async # client

Ruby 使用Regexp限制字符串中“1”的数目

我正在尝试创建一个Regexp来匹配一个表达式,该表达式具有两个以上或等于两个'1'。 这是我到现在为止写的东西- puts "Match." if /(1){1,5}/ =~ test_string 这将正确匹配“1”大于或等于2的字符串,但如果“1”的出现次数大于5,则仍然匹配 如何更正此Regexp以仅匹配出现1到5次1的字符串?可能有更好的版本,但这似乎起到了作用: /^([^1]*1){1,5}[^1]*$/ 细分: ^-字符串的开头 [^1]*1-零个或多个非1字符 1-A‘

Ruby 当一个散列的值相等时,将其替换为第二个散列的键

红宝石大师的长期鉴赏者第一次提问 我有两个散列 hash1 = {"a" =>1, "b"=> 2, "c" => 3} hash2 = {"f" =>1, "g"=> 2, "h" => 3, "i"=>2, "j"=>1} 当第二个散列的值相等时,我想用第一个散列的键替换第二个散列的值,例如: hash2 = {"f"=>"a", "g"=>"b", "h"=>"c", "i"=>"b", "j"=>"a"}

Ruby 执行随机方法

我试图为执行随机方法建立一个逻辑。比如说,我有10个方法,我需要随机运行其中一个 主方法将驻留在my Rails 3.2应用程序的ActionController中,其中包含逻辑和10个方法。使用从数组中选择一个随机方法,然后使用: 你的问题是什么?当你说我正在尝试做一个逻辑时,从你的一次尝试中发布一个小代码真的会很有帮助,否则看起来你确实是在要求别人为你做你的工作。关于堆栈溢出,询问代码但不显示任何努力的问题是离题的。请添加几行代码以保持主题不变,因为这是一个有趣的问题,但如果不是这样的话,它

Ruby 为什么psql版本输出和连接到我的应用程序的psql版本之间存在差异?

我正在构建一个rails应用程序,它是我从朋友那里克隆的。我使用的是Ubuntu 13.10,rails 3.2.14。我使用的是postgresql数据库,当我尝试运行rake db:migrate时,会出现如下错误: PG::UndefinedObject:错误:类型json不存在 第1行:ALTERTABLE过滤器添加列搜索\字符串json 我安装了pg版本:-9.3.1 运行rails数据库的输出是:-psql 9.3.1,服务器9.1.10 正在运行选择版本;:-i686 pc lin

你知道Ruby的另一种ctags生成器吗

Exumerant CTAG不能很好地与Ruby配合使用,您可以看到Ruby.c代码中存在许多漏洞,基本上它无法识别许多情况。其中最重要的一点是: class SomeModule::SomeClass end CTAG生成: SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c 这是错误的。正确且预期的条目是: SomeClass someclass.rb /^class SomeModule::SomeClass

Ruby 红宝石串匹配

你是怎么做的 asd = 'qwe' asd.match('qwe') do p 'it matches' else p 'it doesnt match' end 我的意思是说相反 asd.does_not_match('qwe') do p 'it doesnt match' else p 'it matches' end “不匹配”的语法是什么?使用运算符“!”颠倒语句的逻辑。 把第一行改成 !(asd.does_not_match('qwe')) do *我喜欢在整

Ruby Rails数组关联

我在rails中有3个模型之间的关联 class A < ApplicationController has_many :b end class B < ApplicationController has_many :c belongs_to :a end class C < ApplicationController belongs_to :b end 完美地工作 但是当我写作的时候 A.first.b.c A.first.b.all.c 然后ra

使用实例变量的orange树ruby程序

我正在使用Chris Pine的ruby教程: 任务是: 做一个橘子树课。它应该有一个height方法返回树的高度,还有一个oneyearpasss方法,调用该方法时,树的年龄为一年。每年这棵树都会长高(不管你认为一棵橘子树一年应该长多少),几年后(同样,你的呼唤)这棵树就会死。在最初的几年里,它不应该结果实,但过了一段时间它应该结果实,我猜老树每年的产量比年轻树多。。。你认为什么最有意义。当然,你应该能够计算ranges(返回树上橘子的数量)和pickAnOrange(将@orangeCoun

Ruby 无法卸载sass gem以使用较新版本

我似乎无法卸载旧版本的sass 我做完了 sudo gem uninstall sass 以及 sudo gem uninstall sass --version 3.2.14 当我试着去做 sudo gem update sass 它说没有更新 从这里开始,强制使用最新的gem的最佳方式是什么?我还没有尝试过带sudo出去。成功了。您确定没有使用最新的更新吗?你试过sass-v吗?

Ruby 在Heroku上呈现大量JSON的有效方法

我用一个端点构建了一个简单的API。它可以清理文件,目前有大约30000条记录。理想情况下,我希望能够通过一个http调用获取JSON中的所有记录 以下是我的Sinatra视图代码: require 'sinatra' require 'json' require 'mongoid' Mongoid.identity_map_enabled = false get '/' do content_type :json Book.all end 我尝试了以下方法: 将multi_jso

将一组Ruby模型转换成以id为键的散列的速记方法?

我有一个模型数组,我想将其转换为散列,这样我就可以通过id引用它们。我知道我可以迭代这些项并将它们放入散列,但我知道必须有一种快速、简捷的方法来完成同样的事情: my_models_hash = {} @my_models.each do |model| my_models_hash[model.id] = model end 我怎么能在一条短线里做同样的事情呢?你在用对象追踪每一个对象 单向: @my_models.map { |m| [m.id, m] }.to_h 在v2.0之前,

Ruby如何删除具有匹配元素的数组?

我有这个阵列: [[4, 50], [2, 28], [1, 4], [4, 41], [1, 9], [2, 25]] 我希望构造一个由这个数组的元组[f,l]组成的数组,这样在[f,l]前面就没有g==f的元组[g,h]。所选元组的顺序与原始数组中的顺序相同 [[4, 50], [2, 28], [1, 4]] 示例如果有更多以4或1开头的数组,则应将其删除。它可以是任何整数,4和1只是一个例子。似乎有效: [[4, 50], [2, 28], [1, 4], [4, 41], [1,

Ruby 更新$PATH和rvm

我想将~/bin文件夹添加到我的$PATH中,但每次我这样做并使用rvm时,都会收到以下警告: 警告!路径设置不正确, “/Users/paulcowan/.rvm/gems/ruby-2.1.2/bin”并不是第一位, 通常这是由shell初始化文件引起的-检查它们是否有“PATH=…”条目, 将RVM重新添加到点文件也可能有帮助:“RVM变得稳定--自动点文件”, 要在此shell会话中临时修复,请运行:“rvm使用ruby-2.1.2” 我已尝试使用以下工具重新安装rvm: rvm get

在Ruby中处理许多[…]问题

在纯ruby脚本中,我有以下内容: result = JSON.parse result.body_str count = result && result["ke1"] && result["ke1"]["key2"] && result["ke1"]["key2"]["key3"] && result["ke1"]["key2"]["key3"]["key4"] ? result["key1"]["key2"]

Ruby 如何使用Nokogiri从散列构建节点

许多人通常希望进行相反的转换,但我想从包含许多嵌套哈希甚至数组的Ruby哈希构建节点: my_hash = { "name" => "Something", "property_1" => "Something" "nested_array_items" => [{ "name" => "Nasty nested array item", "advice" => "Use recursive function" },

Ruby 打印与特定十六进制值关联的ASCII字符

我知道使用Perl我可以做如下事情: bash$> perl -e 'print "\x48"x40;' => HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 尝试在Ruby中执行此操作: bash$> ruby -e "40.times{ print("0x48") }" => 7272727272727272727272727272727272727272727272727272727272727272727272727272727

Ruby 除了双引号字符串中的逗号外,如何按逗号拆分字符串

我想用逗号分割以下数据,除了双引号字符串中的逗号 "(CONTRACTS OF 5,000 BUSHELS)" 怎么做 “原始”str.split不起作用 raw_str = '"WHEAT-SRW " ,150106 , CBT ,00 ,001 , 31.5, 26.4, "(CONTRACTS OF 5,000 BUSHELS)"' 实际上我想从 您可以使用和负向前看和负向后看[0]来完成此操作: raw_str = '"WHEA

Ruby MemoryStore中的最大修剪时间是多少?

在的初始化方法中,可以将max_prune_time作为选项传递 它的目的是什么 而且, @max_prune_time=选项[:max_prune_time]| 2 默认单位是多少?秒?max\u prune\u time是Rails在缓存存储耗尽内存时通过删除旧条目来释放内存的最长时间(以秒为单位)。有关详细信息,请参见prune方法的实现: def prune(target_size, max_time = nil) # ... start_time = Time.now cl

Ruby中的TCPSocket连接关闭问题

我是Ruby新手,我正在尝试实现线程,但现在我犯了一个错误:客户端不明白连接已经关闭 早些时候,我在C++中编写了一个简单的TCP客户端服务器应用程序,并且该应用程序工作正常:如果服务器关闭了连接,客户端也说连接也被关闭了。但是在Ruby中,当客户端发生任何事情时,应用程序就会带着错误退出: main.rb:34:in `write': Broken pipe (Errno::EPIPE) from main.rb:34:in `puts' from main.rb:34:in

Ruby 以块的形式_传递特定控制器和操作的选项哈希时,找不到控制器操作

我试图在rails 4中创建一个表单,使用form_for基于表示培训课程的对象。在加载页面之前,应用程序会检查当前用户是否已注册课程。如果没有,则表单上的“提交”按钮将创建一个新的“注册”,标记注册表中的课程id和用户id。这是正确的 如果用户已经注册了,那么我希望submit按钮有一个不同的功能——对特定的注册记录发出get请求,并在屏幕上显示其详细信息。本质上类似于直接指向“注册/id”。然而,这是行不通的 这是用户未注册时显示的表单。它会触发对注册控制器中的创建操作的post请求(并且有

Ruby 规范不作为创建动态类的“沙盒”运行

我有一个带有define方法的模块,它动态创建一个类,如下所示: require "active_support/all" class SomeBaseClass # code end module MyModule def self.define(_class_name) class_name = _class_name.classify Object.const_set(class_name, Class.new(SomeBaseClass)) end end

Ruby 机架选项,如何访问像so一样传递给机架的选项:$rackup--option arg1=true

我已经到处搜索过任何机架文档,详细说明了如何访问文档中提到的您可以传递到机架应用程序的选项,如下所示: $rackup-server thin-env development-option arg1=true 在我的config.ru中,我使用的是Rack::Cascade,如下所示: 机架::Cascade.new[myapp1,myapp2] 我需要访问通过命令行上的rackup传递给Rack的选项,并使其可用于在Rack::Cascade中运行的Ruby应用程序。可以通过[your_Rac

用默认对象填充ruby数组

假设我在ruby中有一个类计数器,定义为 class Counter attr_accessor :starting_value def initialize(starting_value) @starting_value = starting_value end def tick @starting_value = @starting_value + 1 end end 我想用这个对象填充一个数组,使用一个默认参数,如

Ruby Mechanize登录表单提交错误

我正在尝试登录,然后重定向到该页面,但它再次将我重定向到登录页面。我也尝试过这样做,但我仍然有同样的问题 require "mechanize" a = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' } a.get('http://erp.jecrcuniversity.edu.in:8084/jecrc_academia/') do |page| page.form_with(

Ruby watir webdriver打印列表项的计数

我正在尝试获取网页中列表项的计数并输出以下内容: office_lists = browser_driver.li(:class, 'office') office_list = browser_driver.li(:class, 'office') office_list = Hash.new 0 office_list.links.each do |link| office_list[link] += 1 puts office_list 但我一直不成功。我希望有人能。说这些都是

Ruby 找不到“jekyll”(>=0)

使用jekyll-v返回以下内容: /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:308:in'to_specs':在总共21个Gem中找不到'jekyll'>=0 Gem::missingspeccerror 已签入'GEM_PATH=/Users/myusername/.rvm/gems/ruby-2.4.2:/Users/myusername/.rvm/gems/ruby-2.4。2@global,执行“gem env”以获取更多信息 fr

如何在ruby on windows中修复(RubyInstaller::Runtime::DllDirectory::WinapError)?

在代码中实现ruby2d时,我遇到了这个错误 这是一个奇怪的运行时问题 Ruby2d代码 错误 请帮助我修复您必须从MINGW 64位命令提示符运行项目。不是从常规的DOS提示符Windows命令提示符 请确保按照此处的说明进行操作: 注意最后一段: 在Windows上使用Ruby 2D 使用Ruby 2D时,请确保使用MinGW 64位命令提示符,而不是标准的cmd.exe或“开始”菜单中的“使用Ruby启动命令提示符” 通过在C/users/username目录中创建usr/local/b

Ruby空格字符不等于空格字符

在下面的语句中,其中一个空格来自用户的输入,我从远程Rails控制台的ActiveRecord字段复制并粘贴了用户的字符,另一个来自键盘。声明返回false: 关于为什么/如何发生这种情况有什么想法吗?要验证用户输入的空白,不应该使用==和/或include?帮手。我们应该使用现代正则表达式来匹配空间 仅供参考:UTF-8规范中有十多个空格字符,包括但不限于: spaces = { space_medium_mathematical_space: " ", spaces_em_quad:

Ruby 使用“key==value”条件搜索(筛选)JSON数组

我在ruby中搜索数组中的特定对象时遇到问题 我已向你提出请求https://jsonplaceholder.typicode.com/todos 从那里我得到了结果JSON。我正在尝试将其转换为对象数组,然后搜索我知道可以使用参数发出请求的事件,这将解决我的问题,但我没有访问后端的权限 我试图打印数组中的对象,其中包含一个术语中的特定值,并获取布尔值,说明字符串是否存在于数组中。我还试图在堆栈上找到我的问题的答案。这似乎与我的问题最接近,但对我帮助不大 client = HTTPClient.

在ruby中创建对象特定方法的不同方法

我只知道在ruby中创建实例特定方法的一种方法,即 class Test;end obj1 = Test.new class << obj1 def greet p 'Welcome' end end obj1.greet # "Welcome" obj2 = Test.new obj2.greet # through error as, Traceback (most recent call last): NoMethodError (

如何在Ubuntu 20.04上安装ruby dbi?

我试图在Ubuntu20.04上安装ruby dbi,但是失败了,原因如下 osboxes@osboxes:/tmp$ sudo apt install ruby-dbi Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package ruby-dbi 我在Ubuntu 18.04上找到了一些关于ruby dbi

上一页   1   2   3   4   5    6  ... 下一页 最后一页 共 2323 页