小编Nat*_*ong的帖子

Ruby:如何在不指向同一对象的情况下复制变量?

在Ruby中,如何复制变量以使原始更改不影响副本?

例如:

phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,两个变量指向同一个对象; 我想为第二个变量创建一个新对象,但最初它包含相同的信息.

ruby

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

如何才能看到Git合并冲突的"三方差异"?

假设我在Git分支master和我git merge featurebranch.发生了冲突foo.html.

当我打开时foo.html,我看到,在冲突地区,有什么master和有什么featurebranch.但我无法确切地说,master这种冲突方面做出了哪些改变featurebranch ; 我只知道主人现在有什么.

我想看看每个应用的差异.

或者,为了获得相同的信息,我可以看到:

  • 版本master现在
  • 版本featurebranch现在
  • 该版本他们共同的祖先

我怎么能看到这个?

git

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

Rails:有没有Engine.root?

Rails.root 返回一个Path对象,指定Rails项目的根目录.

Rails引擎是否有等效的?喜欢Engine.root?如果没有,我还能从Rails引擎的根目录中建立一条路径吗?

ruby-on-rails-3

56
推荐指数
1
解决办法
9623
查看次数

如何将SQL文件导入Rails数据库?

我有一个.sql文件,我想使用Rake任务加载到我的Rails数据库中.我怎样才能做到这一点?

sql ruby-on-rails

47
推荐指数
3
解决办法
2万
查看次数

我可以在Ruby 2.x中获得所需的命名参数吗?

Ruby 2.0正在添加命名参数,如下所示:

def say(greeting: 'hi')
  puts greeting
end

say                     # => puts 'hi'
say(greeting: 'howdy')  # => puts 'howdy'
Run Code Online (Sandbox Code Playgroud)

如何在不提供默认值的情况下使用命名参数,以便它们是必需的?

ruby arguments ruby-2.0 ruby-2.1

46
推荐指数
4
解决办法
8912
查看次数

如何在具有活动记录的rails中使用两个不同的数据库?

我需要在不同的Rails模型中使用不同的数据库连接.是不是有一种不那么黑的方式呢?

任何链接或搜索关键字都会很棒:)

ruby activerecord ruby-on-rails

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

object_id赋值如何工作?

我正在玩Ruby,.object_id并注意到,在irb的几个连续会话中,我得到了相同的结果:

false.object_id // 0
true.object_id // 2
nil.object_id // 4
100.object_id // 201
Run Code Online (Sandbox Code Playgroud)

实际上,每个整数的object_id似乎都是((value*2)+ 1).

另一方面,在退出并重新运行irb之后,给定字符串的object_id永远不会相同.

这为我提出了几个问题:

  1. 是否有已知的方案object_id确定某些s?其他人基本上是随机的
  2. true,false和nil的id不是顺序的.有没有办法询问给定id表示的对象是什么?(我很好奇其他一位数和ids的关系.)
  3. 你可以(不是你应该)编写模糊的Ruby,你使用已知的对象id引用对象而不命名它们,比如"id 201的对象+ id为19的对象"意味着"100 + 9"?

更新

使用Andrew Grimm的建议,我尝试发现其他"低id"对象,但发现:

  • 在这个序列中似乎没有任何更多的偶数对象 - ids 6,8,10等不指向任何东西.
  • 正如我之前的实验所暗示的那样,所有奇数编号的id都属于数字.具体地,id 1指向数字0,3指向1,5指向2,依此类推.

ruby internals

43
推荐指数
2
解决办法
1万
查看次数

对Rspec的`should_receive`有一个不那么具有侵入性的替代方案吗?

在编写Rspec测试时,我经常感到沮丧should_receive.我想知道是否有一个较少侵入性的选择.

例如:

describe "making a cake" do
  it "should use some other methods" do
    @baker.should_receive(:make_batter)
    @baker.make_cake
  end
end
Run Code Online (Sandbox Code Playgroud)

调用should_receive是一个很好的描述,但它会破坏我的代码,因为should_receive通过屏蔽原始方法来工作,并且make_cake除非make_batter实际返回一些电池,否则无法继续.所以我改成它:

@baker.should_receive(:make_batter).and_return(@batter)
Run Code Online (Sandbox Code Playgroud)

这很难看,因为:

  • 看起来像我的测试是make_batter正确返回@batter,但我居然强迫的仿版make_batter,以返回.
  • 它迫使我分开设置 @batter
  • 如果make_batter有任何重要的副作用(这可能是代码味道,我想)我也必须让这些发生.

我希望这should_receive(:make_batter)将验证方法调用并将其传递给原始方法.如果我想将其行为存根以进行更好的隔离测试,我会明确地这样做:@baker.stub(:make_batter).and_return(@batter).

有没有办法做一些像should_receive没有阻止原始方法调用?我的问题是设计糟糕的症状吗?

ruby rspec

42
推荐指数
3
解决办法
6250
查看次数

如何将HTML表格刮到CSV?

问题

我在工作中使用了一个工具,可以让我查询并获取HTML信息表.我没有任何类型的后端访问权限.

如果我可以将它放入电子表格进行排序,平均等,那么很多这些信息会更有用.如何将这些数据屏蔽到CSV文件?

我的第一个想法

因为我知道jQuery,我想我可能会用它去除屏幕上的表格格式,插入逗号和换行符,然后将整个混乱复制到记事本中并另存为CSV.有更好的想法吗?

解决方案

是的,伙计们,它真的像复制和粘贴一样容易.我不觉得傻.

具体来说,当我粘贴到电子表格中时,我必须选择"选择性粘贴"并选择"文本"格式.否则它会尝试将所有内容粘贴到单个单元格中,即使我突出显示整个电子表格也是如此.

screen-scraping

40
推荐指数
5
解决办法
8万
查看次数

如何在PHP中设置绝对包含路径?

在HTML中,我可以通过以"/"开头的文件路径找到从Web服务器的根文件夹开始的文件.喜欢:

/images/some_image.jpg
Run Code Online (Sandbox Code Playgroud)

我可以将该路径放在任何子目录中的任何文件中,它将指向正确的图像.

使用PHP,我尝试了类似的东西:

include("/includes/header.php");
Run Code Online (Sandbox Code Playgroud)

......但这不起作用.

我认为这个页面说的是我可以设置include_path一次,之后,它将被假设.但我不太懂语法.这两个例子都以句号开头,它说:

用一个 .在include路径中允许相对包含,因为它表示当前目录.

相对包含正是我想要的.

如何确保我的所有包含指向该root/includes文件夹?(额外奖励:如果我想将该文件夹放在公共目录之外怎么办?)

澄清

我的开发文件目前由XAMPP/Apache提供.这会影响绝对路径吗?(我不确定生产服务器是什么.)

更新

我不知道我的问题在这里.include_path我上面引用的东西正是我所寻找的,语法并不是真的令人困惑.我只是尝试过,效果很好.

我发生的一件事是,有些人可能认为"/ some/path"是"绝对路径",因为他们认为操作系统是Linux.此服务器是Windows,因此绝对路径必须以驱动器名称开头.

无论如何,问题解决了!:)

php

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