小编sak*_*ias的帖子

使用子模块克隆存储库:覆盖凭据

我必须自动克隆存储库并获取它的所有子模块.存储库子模块的URL指定在.gitmodules.如果我要使用默认设置,我会这么做

git clone --recursive https://username:password@url.git
Run Code Online (Sandbox Code Playgroud)

问题是凭据不包含在.gitmodules文件中,当我克隆时我会被提示.我必须使用HTTPS而不是SSH.

我尝试使用git config提交凭据:

git clone https://username:password@url.git my_repo
cd my_repo
git submodule init
git config submodule.my_submodule.url "https://username:password@url/my_submodule.git"
git submodule update
Run Code Online (Sandbox Code Playgroud)

但是在上次更新步骤中我被提示输入凭据.我已经检查过子模块url是否正确并且.git/config文件中有正确的凭据.

git git-config git-clone git-submodules

7
推荐指数
2
解决办法
9782
查看次数

为什么我可以在没有attr_writer的情况下设置哈希属性?

如果我理解正确,红宝石允许设置,只有当他们被声明为可写的实例属性(例如,通过attr_writer,attr_accessor或定制的setter方法).我注意到我可以在没有显式编写器方法的情况下设置哈希属性:

class HashSetter
  attr_reader :hash

  def initialize
    @hash = {}
  end

  def set_hash
    self.hash[:message] = 'haha'
  end
end

obj = HashSetter.new
obj.set_hash
puts obj.hash
# -> {:message=>"haha"}
Run Code Online (Sandbox Code Playgroud)

正如所料,如果我有一个"常规"变量而不是哈希值,相同的代码将无法工作:

class VarSetter
  attr_reader :var

  def initialize
    @var = nil
  end

  def set_var
    self.var = 10
  end
end

obj = VarSetter.new
obj.set_var
# ->
# check_accessors.rb:26:in `set_var': undefined method `var=' for #<VarSetter:0x00000001cba510 @var=nil> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

为什么我可以:hash在第一段代码中设置属性?

ruby attributes

3
推荐指数
1
解决办法
612
查看次数

打印Rails测试名称以找到最慢的测试

根据这篇博客文章,我想找出测试套件中最慢的那些。这是代码的简化版本:

# test/test_time_tracking.rb
module TestTimeTracking
  class ActiveSupport::TestCase
    setup    :mark_test_start_time 
    teardown :record_test_duration

    def mark_test_start_time
      @start_time = Time.now
    end

    def record_test_duration
      puts "Test class: #{self.class.name}"
      puts "Duration:   #{Time.now - @start_time}"
    end
  end
end

# test/test_helper.rb
require 'test_time_tracking'
include TestTimeTracking
# ...
Run Code Online (Sandbox Code Playgroud)

是否可以在设置或拆卸期间打印出测试名称?在博客文章中,他们name在teardown块中调用attribute,但这在我的情况下会引发错误。我也试着@name@method_name没有成功。

shoulda-contexts在默认的Rails测试框架上使用gem。我知道可以使用来获取测试名称和持续时间rake test TESTOPTS=-v,但是随后我将不得不运行另一个脚本来解析输出。

unit-testing ruby-on-rails minitest

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