我想了解块.当直接传递给方法时,我得到了正常使用它们的方法.我现在感兴趣的是一个块,将它(例如)存储在一个实例变量中并稍后调用它.
块编程指南听起来像我可以做到这一点,通过使用Block_copy/retain来复制块,但是当我尝试运行它时,我崩溃了我的程序.
- (void) setupStoredBlock
{
    int salt = 42;
    m_storedBlock = ^(int incoming){ return 2 + incoming + salt; };
    [m_storedBlock retain];
}
我试着稍后再说:
- (void) runStoredBlock
{
    int outputValue = m_storedBlock(5);
    NSLog(@"When we ran our stored blockwe got back: %d", outputValue);
    [m_storedBlock release];
}
有人有任何见解吗?(或者,有什么东西我没有用积木?)
非常感谢你!
我正在开发一个包装器组件,用于在React中平滑地加载图像.我使用含有mocha,chai和sinon的酶对我的组件进行单元测试.在这里的测试中,我试图测试:
加载图像时更新组件的状态
onLoad调用组件上的实例方法
const wrapper = shallow( );
const onLoad = wrapper.find('img').props().onLoad;
const onLoadSpy = sinon.spy(onLoad); wrapper.update();
const status = wrapper.state().status;
expect(onLoadSpy).to.have.been.called;
expect(status).to.equal('LOADED');
我发现状态更新既不会被酶反映,也不会更新onLoad间谍的通话计数.这是测试的相应代码:
export default class Image extends Component {
  constructor(props) {
    super(props);
    if (props.src != null && typeof props.src === 'string') {
      this.state = {
        status: LOADING,
      };
    } else {
      this.state = {
        status: PENDING,
      };
    }
    this.onLoad = this.onLoad.bind(this);
  }
  onLoad() {
    this.setState({
      status: LOADED,
    });
  }
  render() {
    //lots of code above …我目前的Ruby on Rails项目通过rcov进行测试(特别是相关性rcov,我们有相当高的标准(如果我们的代码覆盖率<95%,我们就会失败).
我们使用以下命令来测试它:
rcov_cmd = "rcov --rails --text-summary \
            --include #{included_dirs} \
            --exclude #{excluded_dirs} \
            --aggregate #{coverage_dir}/coverage.data \
            --output #{coverage_dir} \
今天我发现了一些在rcov报告中注册绿色(运行)的代码.Homever,我可以证明这段代码没有运行(我在函数的开头引发异常,我的单元测试通过)
我做了一些研究,发现了rcov的--xrefs标志,我认为这会为rcov报告中的每一行添加所有呼叫者.
我将rcov命令更改为:
rcov_cmd = "rcov --rails --text-summary --xrefs \
        --include #{included_dirs} \
        --exclude #{excluded_dirs} \
        --aggregate #{coverage_dir}/coverage.data \
        --output #{coverage_dir} \
(注意添加的--xrefs标志).
我没有额外的呼叫信息,而是将测试覆盖率从96%提高到48%.
--xrefs是否会改变rcov的分析方式?(我认为它只会收集呼叫信息).这与第一个命令有什么不同/更好?(如果单元测试失败,我已经看到单元测试覆盖率会下降,而且我知道如果运行中出现错误,覆盖百分比会下降,但对我来说看起来不错)
我创建了一个控制台Ruby脚本,它使用ARGF从文件或stdin加载数据,然后调用Pry.
当我使用stdin传递数据时,当我传递文件(Pry暂停)但失败(Pry不停止并且只退出Ruby)时,这很有效.
这很奇怪,有谁知道为什么?我想通过stdin传递数据并让Pry暂停.
看,一个示例脚本:
require 'rubygems'
require 'pry'
def pry_it(str)
    binding.pry
end
pry_it(ARGF.read)
当我用ARGV中的文件调用此应用程序时,我得到了正确的回复 - 撬开暂停
% bundle exec ruby pry_test.rb file.txt
From: /Users/wilcoxr/Development/json_pry/pry_test.rb @ line 8 Object#pry_it:
    6: def pry_it(str)
    7:
 => 8:  binding.pry
    9: end
[1] pry(main)>
大!我可以随心所欲地执行Pry命令
当我尝试使用STDIN将数据发送到我的工具时:
% cat file.txt | bundle exec ruby pry_test.rb
From: /Users/wilcoxr/Development/json_pry/pry_test.rb @ line 8 Object#pry_it:
    6: def pry_it(str)
    7:
 => 8:  binding.pry
    9: end
[1] pry(main)>
% 
仔细观察:注意我回到了我的shell提示符,而不是在IRB中暂停.奇怪的!我不明白为什么我会得到这种行为....
我在我的服务器上使用系统范围的Ruby安装,并尝试部署到RVM gemset(如rvm使用1.9.2@gemset_name)
当我运行我的Cap文件时,Cap pukes并说没有安装Ruby.
但是,实际上安装了Ruby.(部署用户是rvm组的一部分,可以rvm use在命令行上手动完成.)
我可能做错了什么?
$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require "bundler/capistrano"
require "rvm/capistrano"
require "erb"
set(:rvm_type)          { :system }
set(:ruby_version)      { '1.9.2' }
set(:rvm_ruby_string)   { "#{ruby_version}@#{application}" }
set(:rvm_path)          { "/usr/local/rvm" }
#set(:rvm_bin_path)      { "#{rvm_path}/bin" }
before "deploy:setup",    "rvm:debug_gemset"
before "deploy:setup",    "bundle:install_gem"
namespace :rvm do
  desc "Creates gemset for application"
  task :debug_gemset do
    disable_rvm_shell do
      run "/usr/local/rvm/bin/rvm list rubies" do |ch, stream, data|
        if stream == :err
          logger.debug …我有一个Web应用程序,该应用程序使用ActiveResource与另一台具有连接速率限制的服务器通信。我很好奇如何才能最好地从运行我的Web应用程序的主机上进行监视,即从服务器上linux上的bash提示符下,如何测量我的计算机每秒向另一台计算机发出的出站请求?
我正在寻找给定接口,主机名和/或它们的某种组合的Linux单行程序,它告诉我与该服务器的连接速率。我已经接近使用tc和iftop之类的工具,但是这些工具报告的是所传输的数据量,而不是所建立的连接……所以它并不是我所要寻找的。我很想看类似的东西:
$ awesometool --host thetargethost.com --interface eth0 --interval 5
收集统计数据…
接口eth0上针对targethost.com的每秒请求报告
平均:23请求/秒最小值:12请求/秒最大值39请求/秒
抽取了5个样本
谁能指出我一个人?
我创建了一个这样的方法:
void myMethod(Map kwArgs, def myParam)
{
   println kwArgs.firstName
   println [kwArgs.lastName, "Wilcox"].find()  
   // ^^^ if lastName named parameter not specified, "Wilcox"
   ....
}
现在是时候用 GroovyDoc 来记录这个方法了。部分很容易
/**
  myMethod rules the world
  @param myParam something something
但是我如何记录命名参数?(同样,如何指定lastName参数具有默认值?(即,是否可以设置一些元数据,或者只是在英文描述中向读者明确说明?)
我有一个插件,只有在使用+ python pythonhelper编译vim时才会运行.我与许多机器共享我的.vim,有些机器没有打开python模式编译的vim.
所以,我想知道:是否有一个vim命令,我可以放入我的vimrc所以我可以有条件地包含插件?
就像是:
if PYTHON_FEATURE_ENABLED
    add the pythonhelper to the runtimepath...
end
我知道我可以修改vim的runtimepath以包含插件,但在.vimrc中执行这种条件的vim语法是什么?
ruby ×4
capistrano ×1
chai-enzyme ×1
cocoa ×1
enzyme ×1
groovy ×1
javascript ×1
linux ×1
networking ×1
objective-c ×1
pry ×1
rcov ×1
reactjs ×1
rvm ×1
sinon ×1
vim ×1