小编Jim*_*dra的帖子

如何规范退出或中止的方法

我有一个从CLI触发的方法,它有一些明确退出或中止的逻辑路径.我发现在为此方法编写规范时,RSpec将其标记为失败,因为退出是异常.这是一个简单的例子:

def cli_method
  if condition
    puts "Everything's okay!"
  else
    puts "GTFO!"
    exit
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以将规范包装在lambda中should raise_error(SystemExit),但是忽略了块内发生的任何断言.要明确:我不是在测试退出本身,而是在它之前发生的逻辑.我该如何选择这种方法呢?

ruby rspec

10
推荐指数
2
解决办法
3688
查看次数

如何在没有机架文件的情况下将Sprockets与Sinatra一起使用?

我正在编写一个带有通过Thor启动的嵌入式Sinatra应用程序的库.我想挂载Sprockets::Environmentat的实例,/css并将/js主应用程序映射到/.这Rack::URLMapconfig.ru文件中很容易使用,但在这种情况下没有一个因为我以编程方式启动Sinatra应用程序Sinatra::Application.run!.我怎样才能做到这一点?

rack sinatra sprockets

10
推荐指数
2
解决办法
3957
查看次数

将字符串缩小为对象的键

tsc --strict注意:下面显示的所有代码都会调用 TypeScript 。

\n

给定一个单例对象o

\n
const o = {\n  foo: 1,\n  bar: 2,\n  baz: 3,\n};\n
Run Code Online (Sandbox Code Playgroud)\n

如果我有一个在编译时无法知道的字符串值(比如来自用户输入),我想安全地使用该字符串来索引o。我不想添加索引签名,o因为它不是动态的或可扩展的\xe2\x80\x94它总是具有这三个键。

\n

如果我尝试简单地使用字符串来索引o

\n
const input = prompt("Enter the key you\'d like to access in `o`");\n\nif (input) {\n  console.log(o[input]);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

正如预期的那样,TypeScript 报告此错误:

\n
error TS7053: Element implicitly has an \'any\' type because expression of type \'string\' can\'t be used to index type \'{ foo: number; bar: number; baz: number; }\'.\n  No index signature …
Run Code Online (Sandbox Code Playgroud)

typescript type-narrowing

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

在JavaScript中使用(function(){...})()有什么好处

我在JQuery中注意到使用了以下代码结构

(function(){var l=this,g,y=l.jQuery,p=l.$,...})()

这似乎创建了一个功能,并称之为.

采用这种方法与内联函数的内容相比有什么好处?

javascript closures anonymous-function

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

排除使用Capistrano部署文件,同时仍然使用Git进行版本控制

我想开始使用qUnit在我的Rails应用程序中测试JavaScript,我想知道如何将测试JavaScript和测试运行器HTML页面保持在版本控制之下(当然我正在使用Git)但是当他们将它们从生产服务器上移开时我使用Capistrano部署应用程序.我的第一个想法是让Capistrano像往常一样发送所有代码,包括测试文件,并编写一个任务,在部署过程结束时删除它们.不过,这看起来像是一种黑客攻击.有没有更简洁的方法告诉Capistrano在部署时忽略存储库的某些部分?

git deployment capistrano ruby-on-rails qunit

9
推荐指数
2
解决办法
3818
查看次数

如何通过检查传递给pytest_runtest_teardown的Item对象来确定测试是通过还是失败?

Pytest允许您通过实现pytest_runtest_teardown插件中调用的函数来挂钩每个测试的拆解阶段:

def pytest_runtest_teardown(item, nextitem):
    pass
Run Code Online (Sandbox Code Playgroud)

是否有一个属性或方法item,我可以用来确定刚刚完成运行的测试是通过还是失败?我找不到任何文档pytest.Item和搜索源代码并在游戏中ipdb没有透露任何明显的东西.

python pytest

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

在Kubernetes清单中使用动态值

我有两个独立的Kubernetes集群,分别用于登台和生产环境.我希望我将向每个集群提交Kubernetes API对象的YAML清单,但是某些对象在两个环境之间的配置会略有不同.

想象一下,在每个集群上运行一个内部Docker注册表,一个使用S3作为存储后端,一个使用GCS后端.注册表容器可以接受这些配置值作为环境变量或从文件中读取,这两个Kubernetes都表示支持,但是我应该如何为每个环境填充这些值?

基本上我想要的是一种让清单看起来像这样的方法,其中$()语法是在提交清单时在服务器上发生的变量插值:

---
apiVersion: v1
kind: Pod
metadata:
  name: foo
spec:
  containers:
    - name: foo
      image: foo
      env:
        - name: bar
          value: $(etcdctl get /path/to/bar)
Run Code Online (Sandbox Code Playgroud)

我可以编写使用占位符作为值的模板,然后处理模板,从一些外部源中提取实际值,以生成实际提交给集群的最终清单.但是,我想我先问一个这样做的工具已经存在,或者有一些我不知道的Kubernetes祝福方式.这似乎是许多人为了使用Kubernetes而需要做的事情.

我曾经有过的其他想法包括在主机节点上使用etcd,confd和scripts的某些组合,但是这开始进入主机配置管理领域,我想以几乎所有成本避免这些领域.我正在使用CoreOS,主机完全通过coreos-cloudinit进行配置.换句话说,在创建节点时未定义的主机系统上没有任何操作,因此像Ansible这样的传统配置管理工具已经完成.

我知道Kubernetes的秘密系统,但其中一些变量值可能非常大,而且大多数都不是秘密.

kubernetes confd

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

如何在Perl中将ISO8601时间戳转换为unix时间?

给定一个表示ISO8601格式的日期/时间的字符串(例如20100723T073000),我需要使用通用strftime格式字符串最终将其解析为用户提供的格式.为此,我需要将ISO8601时间戳转换为Unix时间戳.Perl有大量的日期/时间操作模块,我有点不知所措.有关如何做到这一点的任何建议?

perl datetime iso8601 unix-timestamp

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

使用JavaScript在一个特定时区内抵消DST的时间

如果它目前在太平洋时区的DST,我需要将时间抵消一个小时.无论用户的当地时区如何,我如何确定太平洋时区的当前夏令时状态?

这是我到目前为止所拥有的.第4行中的"dst"只是一个函数的占位符,它可以告诉我该区域的夏令时是否有效.

function checkTime() {  
    var d = new Date();  
    var hour = d.getUTCHours();  
    var offset = dst ? 7 : 8; // is pacific time currently in daylight savings?

    // is it currently 6 AM, 2 PM, or 10 PM?
    if (hour === ((6 + offset) % 24) || hour === ((14 + offset) % 24) || hour === ((22 + offset) % 24)) {  
      // do stuff
    }
}

checkTime();
Run Code Online (Sandbox Code Playgroud)

javascript timezone dst

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

OS X上的RVM,FSEvents和CarbonCore

我正在设置一个使用SASS的项目,它使用FSEvents来防止轮询磁盘.但是,这似乎与RVM不相称.这意味着当我跑步时,sass --watch我得到这个警告:

Warning: Unable to load CarbonCore. FSEvents will be unavailable.

我意识到它仍然可以工作,但我不想不断地轮询我的磁盘.我想让它与FSEvents一起工作.我能找到的最好的信息就是这个帖子:

http://groups.google.com/group/compass-users/browse_thread/thread/df7d9d0da9ec1eb1

我按照Brandon Mathis的描述重新安装了我的RVM Ruby(使用1.9.2)并下载了链接的RubyCocoa.但是,我在安装RubyCocoa的第一步时遇到错误:

[rvm 1.9.2] ~/Downloads/RubyCocoa-1.0.0 $ ruby install.rb config --build-universal=yes
install.rb: entering config phase...
create ext/rubycocoa/extconf.rb
create framework/GeneratedConfig.xcconfig
create framework/src/objc/Version.h
create tests/Makefile
---> framework
create /Users/xxx/Downloads/RubyCocoa-1.0.0/framework/src/objc/osx_ruby.h ...
config failed
hook /Users/xxx/Downloads/RubyCocoa-1.0.0/framework/post-config.rb failed:
No such file or directory - /Users/xxx/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0/ruby.h
try 'ruby install.rb --help' for usage
Run Code Online (Sandbox Code Playgroud)

看起来问题源于这是RubyCocoa的旧版本(我注意到丢失的文件在路径中有1.9.1),但在Google Groups帖子中,Brandon Mathis特意说使用他链接的版本而不是最新版本一.

有没有人知道如何配置这个,或者链接到最近的,希望更简单和更清晰的指南,让FSEvents使用RVM?

有问题的版本:

  • RVM 1.2.0
  • Ruby 1.9.2补丁级别136(通过RVM安装)
  • Mac OS X 10.6.6
  • HAML gem 3.0.25(SASS是HAML的一部分)

谢谢!

ruby macos sass fsevents rvm

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