小编abo*_*nec的帖子

将项目拆分为子文件夹

我想将我的项目分解为子文件夹.

我想要这个代码结构:

??? main.go
??? models
    ??? user.go
Run Code Online (Sandbox Code Playgroud)

main.go是:

package main

import (
  "fmt"
  "./models"
)

func main(){
  fmt.Println(User{"new_user"})

}
Run Code Online (Sandbox Code Playgroud)

而user.go是:

package models

type User struct {
  Login string
}
Run Code Online (Sandbox Code Playgroud)

但是主程序包中没有定义用户,导入引发警告"导入但未使用".

我究竟做错了什么?我的项目很简单(不是这样的例子,只是文件很少(控制器和模型)),我想要一个简单的结构.

也许我是以完全错误的方式做到的?

问题项目在这里:https://github.com/abonec/go_import_problem

go

16
推荐指数
3
解决办法
9924
查看次数

没有jQuery的stopPropagation

我绑定到一个链接(通过使用.live()jQuery 的函数)click事件,然后手动添加一个onclick纯JS和HTML(如<a href="".... onclick="some action">)的事件处理程序.我想防止事件冒泡到live方法,但我不知道如何.

也许e.stopPropagation()在这种情况下是有用的,但添加的事件处理程序onclick是用纯JS编写的,我无法stopPropagation()从外部调用jQuery元素包装器.return false在这种情况下不起作用.我试图替换return false,$.Event('click').stopPropagation()但我认为这是错误的,因为它不起作用.

如何在live()没有jQuery包装器的情况下防止冒泡到方法?

javascript jquery stoppropagation

12
推荐指数
2
解决办法
8329
查看次数

在ruby中使用字符串插值会发生什么?

我认为ruby只是调用方法to_s但我无法解释它是如何工作的:

class Fake
  def to_s
    self
  end
end

"#{Fake.new}"
Run Code Online (Sandbox Code Playgroud)

根据逻辑,由于无穷大递归,这应该将堆栈级别提升得太深.但它工作正常,似乎从一个对象调用#to_s.

=> "#<Fake:0x137029f8>"
Run Code Online (Sandbox Code Playgroud)

但为什么?

添加:

class Fake
  def to_s
    Fake2.new
  end
end

class Fake2
  def to_s
    "Fake2#to_s"
  end
end
Run Code Online (Sandbox Code Playgroud)

此代码在两种情况下的工作方式不同

puts "#{Fake.new}" => "#<Fake:0x137d5ac4>"
Run Code Online (Sandbox Code Playgroud)

但:

puts Fake.new.to_s => "Fake2#to_s"
Run Code Online (Sandbox Code Playgroud)

我认为这是不正常的.有人建议在ruby解释器中它发生在内部吗?

ruby

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

如何在rails中测试嵌套属性?

我有一个rails控制器,在这里定义:

https://github.com/abonec/Simple-Store/blob/master/app/controllers/carts_controller.rb

购物车页面上,用户可以通过发布嵌套属性来指定line_items的数量.参数如下所示:

{ "cart" => {
  "line_items_attributes" => {
    "0" => {
      "quantity" => "2",
      "id" => "36" } } },
  "commit" => "Update Cart",
  "authenticity_token" => "UdtQ+lchSKaHHkN2E1bEX00KcdGIekGjzGKgKfH05So=",
  "utf8"=>"\342\234\223" }
Run Code Online (Sandbox Code Playgroud)

在我的控制器动作中,这些参数保存如下:

@cart.update_attributes(params[:cart])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在测试中测试这种行为.@cart.attributes仅生成模型属性而不是嵌套属性.

我该如何测试这种行为?如何在我的功能测试中使用嵌套属性模拟post请求?

testing ruby-on-rails functional-testing

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

如何在rails 3中定义自己的路由助手?

我使用polimorphic_path并且它有些马车.此方法需要一些未定义的路由助手.我如何定义(像常规方法)自己的路由助手将使用像"model_name_path,model_name_url等"?

routes ruby-on-rails custom-routes

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

在vim中支持特定类型的注释

在ruby methaprogramming中,我们在多行字符串中有特殊类型的注释,这些注释将被评估.它们看起来像这样:https://github.com/rails/rails/blob/8775ffa37231d381cba34f0ecacb8a7bbcf0573f/activesupport/lib/active_support/memoizable.rb#L77

这个字符串在两部分上逐行划分:带有插值的字符串,将在左侧进行评估,代码示例在右侧.手动输入此评论是一项艰苦的工作.它需要许多手动缩进.

在vim中是否有一些插件或工具可以帮助编写这种类型的注释?

vim

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

在内存中读取搜索器

我编写了一个下载图像的服务,通过 zip 存档加入它并将其上传回 aws。这项服务应该是省时的。我的第一个版本非常简单:

  1. 并行下载所有文件并保存到磁盘。
  2. 从磁盘读取所有文件,通过zip包加入并保存回磁盘
  3. 从磁盘读取存档并将其发送到 s3。

但我认为所有这些从磁盘操作中保存和读取的性能都低于内存通信。

我一起加入了下载和存档(所有下载阅读器都直接进入存档器)。但我不明白如何与上传者一起加入。

S3 上传器需要一个ReadSeeker来放置对象。归档器的当前实现是:

func Archive(inputQueue <-chan Input) io.ReadSeeker {
    zipFile, err := os.Create("test_arch.zip")
    if log.Error(err) {
        os.Exit(1)
    }

    arch := zip.NewWriter(zipFile)
    go func() {
        defer arch.Close()
        for input := range inputQueue {
            header := &zip.FileHeader{
                Name:   filepath.Join(baseDir, input.Path()),
                Method: zip.Store,
            }
            writer, err := arch.CreateHeader(header)
            if log.Error(err){
                os.Exit(1)
            }
            _, err = io.Copy(writer, input.Reader())
        }

    }()

    return zipFile
}
Run Code Online (Sandbox Code Playgroud)

它将存档保存到磁盘。如何写archihve到中间结构通过这种结构,S3上传的是需要一个ReadSeeker

go

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