小编if *_*one的帖子

不能用Rspec存根

我有一个Rails 4应用程序,这是我的lib/foobar:

jan@rmbp ~/D/r/v/l/foobar> tree
.
??? foo_bar.rb
??? foobar_spec.rb

0 directories, 2 files
Run Code Online (Sandbox Code Playgroud)

和文件:

foob​​ar_spec.rb

require "spec_helper"

describe "FooBar" do
  subject { FooBar.new }
  its(:foo) { should == "foo"}
  #stubbed version of test crashes
  #FooBar.stub(:foo).and_return("bar")
  #subject { FooBar.new }
  #its(:foo) { should == "bar"}

end
Run Code Online (Sandbox Code Playgroud)

foo_bar.rb

class FooBar
  def foo
    "foo"
  end
end
Run Code Online (Sandbox Code Playgroud)

spec_helper.rb:

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
# commented for zeus …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails stub ruby-on-rails-4

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

使用Rails 4(和Hstore)在PostgreSQL中存储嵌套的哈希

我有一个Rails应用程序,它汇集了来自Google API的大量数据.我目前在MongoDB中存储JSON响应(所以我的Rails应用程序同时包含pg和mongo).但是,今天,我遇到了PostgreSQL Hstore扩展,我决定尝试一下.

不幸的是,我遇到了一个问题.API提供的JSON是多层深度的,因此Ruby Hash JSON.parse包含哈希,其中包含新的哈希值.但是,Hstore是字符串键/值存储,它只有1级深度.所以第一个哈希中的哈希就变成了字符串.

我发现真正令人讨厌的黑客攻击eval是变成字符串的哈希:

eval("{ "foo" => "bar" }")
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个.有关怎么做的提示?我应该继续使用MongoDB还是有更好的方法在PG中存储多级深度哈希值?

postgresql ruby-on-rails hstore ruby-on-rails-4

10
推荐指数
3
解决办法
8518
查看次数

在文件更改时自动重新编译和重新加载服务器

我知道AppEngine会这样做,但我不是为它编码.

我尝试使用GuardRuby世界,监听.go文件的变化,并执行以下命令:

killall foo
go build -race
./foo &
Run Code Online (Sandbox Code Playgroud)

但它永远不会发送foo到后台,它只是无限期地挂起.

你们是怎么解决这个问题的?解决方案也必须是跨平台的(GNU/Linux和Mac).

go guard

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

去 - 找不到包"appengine"

我已按照本指南安装AppEngine SDK. https://developers.google.com/appengine/docs/go/gettingstarted/introduction

我最初使用Brew安装了Go 1.2(在OSX上).我设定了自己的路径:

export GOPATH=$HOME/Documents/go
export PATH=$GOPATH/bin:$PATH
export PATH=$HOME/Documents/go/go_appengine:$PATH
Run Code Online (Sandbox Code Playgroud)

我复制/粘贴了你好世界的应用程序,然后运行它goapp serve.都好.

现在,一旦我尝试使用appengine:

import (
    "appengine"
)
Run Code Online (Sandbox Code Playgroud)

我得到编译时错误:

api.go:5:5: cannot find package "appengine" in any of:
    /usr/local/Cellar/go/1.2/libexec/src/pkg/appengine (from $GOROOT)
    /Users/jan/Documents/go/src/appengine (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)

起始指南文档没有说明这一点.似乎SDK有自己的$GOPATHdir with /src,/pkg/bin.我假设我必须一直手动切换$GOPATHSDK和本机Go之间,这没有任何意义,甚至不适合我(因为我主要处理非appengine的东西).

我在这里显然做错了.我错过了什么?

编辑:看起来实际的appengine服务器正在编译并运行正常,但是我的整个设置都被破坏了(测试,Vim ......).有没有解决方法?

google-app-engine go

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

Rails RSpec就像在Google Go中测试一样

我正在寻找行为导向,英语听起来像测试实用程序Go.像Ruby中的RSpec或JavaScript中的Jasmine.

go-spec在GitHub上找到了它,但它已经坏了(2年后没有更新,也不适用于Go 1.

go

8
推荐指数
2
解决办法
2479
查看次数

警告:Nokogiri是针对LibXML版本2.8.0构建的,但动态加载了2.7.8

我在OSX ML上的Ruby 2.0.0和Rails 4配置上遇到此问题.我的Arch Linux工作站上没有这个问题.

之所以出现这种警告是很讨厌,就在于它打破我的Vim的插件(SweetVimRspec),并因此杀死了我的Vim的开发工作流程,因为我无法测试.

我在这里尝试了每个upvoted解决方案: Mac用户并获得警告:Nokogiri是针对LibXML版本2.7.8构建的,但已动态加载2.7.3

我无法摆脱它(实际上我已经摆脱它nokogiri本身,但rspec and rails console根本没有).

ruby macos ruby-on-rails nokogiri ruby-on-rails-4

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

Golang JSON标签

假设我有一个结构Foo.

Foo struct {
        Bar, Baz int
}
Run Code Online (Sandbox Code Playgroud)

我想把这个结构编组成json如下: {bar : 1, baz : 2}

我怎么能实现这一点,而不是Bar, Baz int使用标签将我的单行多名称声明()分成两个单独的行.

这有效:

Foo struct {
        Bar int `json:"bar"`
        Baz int `json:"baz"`
}
Run Code Online (Sandbox Code Playgroud)

但我想:

Foo struct {
        Bar, Baz int `json:???`
}
Run Code Online (Sandbox Code Playgroud)

后者甚至可能吗?

go

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

Golang Vim自动完成提示

我使用https://github.com/nsf/gocodehttps://github.com/Shougo/neocomplete.vim进行Go自动完成.

除了一件小事之外,它的效果非常好.当我输入像 fmt.pri 我这样的自动完成选项时:

fmt.Println(a ...interface{}) (n int, err error)

由于我是Go的新手,这非常有用,因为现在我知道该方法采用了什么参数,类型是什么,以及它返回了什么.不幸的是,一旦我写了过去括号,信息就消失了. fmt.Println(

因此,对于我第一次使用的更复杂的方法,我陷入困境,必须跳转到源定义,或运行godoc.

在某处可以获得这些信息要容易得多,最好是在命令/状态行所在的Vim底部.

有谁知道如何实现这样的事情?

编辑:预览窗口打破我的Vim所以它不是一个选项.

vim go

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

如何在Tmux中禁用键绑定

使用Tmux和Vim有时会很痛苦.对我来说其中一个碰撞是Control-S.我在Vim中使用它来打开split中的缓冲区,但是当使用Tmux时,那么......

Tmux用它做了些蠢事,我无法弄清楚它的目的是什么.但基本上,当C-s在Tmux中按下时,屏幕会冻结.它解冻了C-q.我不知道什么是好的,如果有的话.

unbind C-s
unbind C-q
Run Code Online (Sandbox Code Playgroud)

我试图在tmux.conf中取消绑定Cs,但它没有用.我怎么解开呢?

我还从终端释放了绑定 .bashrc

stty -ixon -ixoff
Run Code Online (Sandbox Code Playgroud)

vim tmux

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

Golang Formatter和Vim - 如何破坏历史记录?

Go(Golang)编程语言附带了一个名为的工具go fmt.它是一个代码格式化程序,可以自动格式化代码(对齐,字母排序,制表,间距,习语......).它非常棒.

所以我发现这个小自动命令在Vim中使用它,每次缓冲区都保存到文件中. au FileType go au BufWritePre <buffer> Fmt Fmt是Go vim插件附带的功能.

这真的很棒,但它有一个问题.每次格式化程序写入缓冲区时,它都会在撤消/重做历史记录中创建跳转.在尝试撤消/重做更改时会变得非常痛苦,因为每次第二次更改都是格式化程序(使光标跳转到第1行).

所以我想知道,有没有办法在触发后丢弃撤消/重做历史记录的最新变化Fmt

编辑: 好的,到目前为止我有: au FileType go au BufWritePre <buffer> undojoin | Fmt 但它还不是很好.根据:h undojoin,撤消后不允许使用undojoin.当然,当我尝试:w撤消后,它会触发错误.

那么我如何实现像这样的伪代码:

if lastAction != undo then
    au FileType go au BufWritePre <buffer> undojoin | Fmt
end
Run Code Online (Sandbox Code Playgroud)

如果我弄清楚最后一点,我想我有一个解决方案.

vim go

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