小编bra*_*che的帖子

在Rails路由中测试什么?

我很好奇人们认为对路线进行充分/彻底的测试.我工作的人似乎想要在我们的路线文件中断言每条路线,无论标准如何.我觉得这是浪费时间,但也许我错了,我不知道这有什么价值.

在某些情况下,我可以在路由中看到一些价值.我们仍然有一些响应GET和POST请求的动作,虽然我一直想要摆脱它们.我们没有任何关于lambdas或任何东西的疯狂约束,但是如果我们这样做,那似乎值得测试.

但对于正常的资源定义?

resources :foo, only: [:index, :show]
Run Code Online (Sandbox Code Playgroud)

我们断言这两条路线都存在,我们声称它们是GET并且它们会转到正确的控制器/动作.这有什么意义吗?感觉就像我们刚刚测试Rails一样.

在一个稍微相关的问题上,我更喜欢定义像上面那样的资源路径(包括only: [:index, :show]部分).resources :foo如果在该控制器上只有索引/显示操作,那么仅在路由文件中定义是否有任何后果?

在我看来,它可能只是使用更多的时间和/或内存,但它是否也是一个安全问题,或者是我不知道的非常糟糕的事情?

ruby-on-rails rails-routing

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

升级到Rails 3.1后找不到图像资源

我已经将应用程序升级到Rails 3.1,除了图像标签没有找到图像之外,所有内容都已设置并正常工作.我已将所有图像从公共/图像移动到app/assets/images.浏览器在http:// localhost:3000/assets/foobar.png请求图像,但它只是在Chrome中显示为损坏的图像.在单独的选项卡中打开它说"没有路线匹配[GET]"/assets/foobar.png".

我觉得我只是错过了某个地方的设置,但我还没有找到它的内容.有什么建议?

ruby-on-rails-3.1

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

lldb从ssh会话附加到OS X上的进程

当我进入OS X时,如何将lldb附加到正在运行的进程?我无法从终端窗口调试此特定应用程序,因为更改窗口将更改我正在尝试调试的某些UI状态.

当我从ssh会话中附加lldb时,它说"附加失败:丢失连接".

编辑:这不是断断续续的ssh.我没有与ssh断开连接,只是在我进入ssh会话时lldb不会附加.

lldb

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

需要来自资产路径的子目录的资产文件

我正在尝试将我的应用程序升级到Rails 3.1,并且我有很多自定义Javascript文件,我正在尝试迁移到新的资产管道.

我当前(即3.1之前的)目录结构具有类似于:

public/
    foo/
        model.js
        controller.js
        etc...
Run Code Online (Sandbox Code Playgroud)

所以,我正在尝试将它们移到lib/assets/javascripts并保持foo /子目录完整(而不是制作foo_model.js,foo_controller.js等).

在我的application.js中,我试图这样做:

//= require foo/model
Run Code Online (Sandbox Code Playgroud)

//= require 'foo/model'
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.Rails总是给我一个错误页面并说:

couldn't find file 'foo/model.js'
Run Code Online (Sandbox Code Playgroud)

如果它们不在子目录中,我确实测试了正确包含的东西,所以我知道这不仅仅是我的lib/assets目录不在include路径中.所以我想我只是想知道是否有办法做到这一点,或者我应该只是扁平化目录并使用foo_model.js等?

ruby-on-rails-3.1 sprockets asset-pipeline

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

不知道如何导出 Objective-C 类。i386 体系结构的未定义符号

我正在尝试在 OSX 上的 GTK+ 上做一些工作,但遇到了一些麻烦,因为说实话,我对 Objective-C 不太熟悉。我有足够的编程经验,可以很快掌握基本语法,并且可以在文档中查找我需要的内容。但我遇到的问题与链接库并将类暴露给我链接的程序有关。

GTK+ 是一个 C 库,但 OSX 后端包含几个 Objective-C 类。它们不作为公共 API 公开,仅在内部使用;但对于我正在做的事情,我想尝试公开这些类。

作为参考,这里是其中一个类:

https://github.com/GNOME/gtk/blob/gtk-2-24/gdk/quartz/GdkQuartzWindow.h https://github.com/GNOME/gtk/blob/gtk-2-24/gdk/quartz /GdkQuartzWindow.c

我已经更改了构建系统,以便它安装头文件。我有另一个源文件(在 gtk+ 构建系统之外),其功能如下:

GdkQuartzWindow *win = [[GdkQuartzWindow alloc] /* other messages... */ ];
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时出现链接器错误:

Undefined symbols for architecture i386:
  ".objc_class_name_GdkQuartzWindow", referenced from:
  pointer-to-literal-objc-class-name in main-a8d029.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我不太熟悉 Objective-C 编译器/链接器的工作原理,并且无法理解我如何(或者如果我可以)解决这个问题。

当我运行时,nm libgdk-quartz-2.0.dylib | grep GdkQuartzWindow我看到很多关于这个类的消息:

00057120 t -[GdkQuartzWindow …
Run Code Online (Sandbox Code Playgroud)

linker objective-c clang

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