为什么capistrano返回与set vars不同的fetch

时间:2016-02-03 11:18:06

标签: capistrano3

遇到capistrano 3的问题。

每当我设置一个不是字符串的值时,在获取时,值就会消失,我期待一个空哈希:

namespace :something

  set :my_var, Hash.new

  task :do_something do
    fetch(:my_var) # this is empty, no way to get a hash here, always a string
  end
end

可能有一种方法可以实现这一目标,但这是非常违反直觉的,并且不像我希望的那样有效。

1 个答案:

答案 0 :(得分:1)

我自己尝试过,似乎按照您的意愿行事:https://github.com/will-in-wi/cap_3_variable_test

如果我创建了一个文件夹,请安装Capistrano,然后将其创建为我的deploy.rb

# config valid only for current version of Capistrano
lock '3.4.0'

set :my_var, Hash.new

namespace :something do
  task :do_something do
    puts fetch(:my_var).class
    puts fetch(:my_var)
  end
end

然后运行bundle exec cap staging something:do_something,我得到:

Hash
{}

您能否看一下这个例子,如果您发现任何重大差异,请告诉我?