小编Leo*_*Leo的帖子

如何使用YARD记录Rake任务?

我想在Rails应用程序中包含有关Rake任务的信息.我们使用YARD作为文档,目前页面lib/tasks/development.rake默认显示为无格式文本.

我可以使用# @markup ruby YARD文档中的 Ruby源代码进行渲染.

但是,这只是内联任何注释,即使它们包含YARD指令# @!method foo.这意味着有关标记DSL的YARD文档似乎不适用.

我错过了什么吗?

如何让YARD识别文件中的代码与文档.rake

NB我会很高兴一个忽略实际代码并只生成文档副本的解决方案,但文档副本的来源必须是.rake文件本身 - 我不希望文档存在于单独的.markdown文件(或其他任何)中,因为它也是很有可能它失去同步.

更多信息 - yard命令:

我正在使用.yardopts包含以下内容的文件:

--asset graphs 'app/**/*.rb' 'lib/**/*.rb' - README info/*
Run Code Online (Sandbox Code Playgroud)

要让YARD读取Rake任务,我可以'lib/tasks/*.rake' 连字符添加(即将Rake文件添加到YARD'文件'列表中),但如上所述,这不能正确处理它们.

根据Benjamin在下面的建议,我尝试'lib/tasks/*.rake' 连字符之前添加(即将 Rake文件添加到要处理的常规Ruby文件列表中),但这似乎根本不会生成任何内容.

YARD可能会产生一些东西,但不是在预期的位置/我想要的预期文件名,我不太熟悉YARD如何确定某个地方是否有孤立的输出.在YARD生成的搜索中肯定没有任何合适的内容,而且简单find doc | grep rakefind doc | grep basename_of_rake_file不显示任何内容.

ruby rake ruby-on-rails yard

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

LLDB没有显示源代码

我正在尝试调试我正在编写的C++程序,但是当我在LLDB中运行并停止程序时,它只显示汇编程序,而不是原始源代码.例如,崩溃之后我正在尝试调试:

Process 86122 stopped
* thread #13: tid = 0x142181, 0x0000000100006ec1 debug_build`game::update() + 10961, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x0000000100006ec1 debug_build`game::update() + 10961
debug_build`game::update:
->  0x100006ec1 <+10961>: movq   (%rdx), %rdx
    0x100006ec4 <+10964>: movq   %rax, -0xb28(%rbp)
    0x100006ecb <+10971>: movq   -0x1130(%rbp), %rax
    0x100006ed2 <+10978>: movq   0x8(%rax), %rsi
Run Code Online (Sandbox Code Playgroud)

我正在编译-O0 -g.通过Xcode(我在OSX上)或从命令行运行调试器时,我看到同样的事情.

我还需要做些什么才能让源代码显示在LLDB中?

补充说明

以下是典型构建命令的示例:

clang++ -std=c++1y -stdlib=libc++ -fexceptions -I/usr/local/include -c -O2 -Wall -ferror-limit=5 -g -O0 -ftrapv lib/format.cpp -o format.o
Run Code Online (Sandbox Code Playgroud)

之前-O2是因为那是我正在使用的默认值,但我相信后者-O0会覆盖它,对吧?

我试过的

  1. 我用一个简单的'hello world'程序使用相同的构建设置重新创建了这个问题.

  2. 经过一些搜索,我试着运行dsymutil main.o …

c++ lldb clang++ tup

19
推荐指数
2
解决办法
8548
查看次数

如何检查HTTParty生成的完整URL?

我想查看HTTParty gem从我的参数构建的完整URL,无论是在提交之前还是之后,都没关系.

我也很乐意从响应对象中抓取这个,但我也看不到这样做的方法.

(背景)

我正在使用HTTParty gem为API构建一个包装器.这是广泛的工作,但偶尔我从远程站点得到一个意外的响应,我想深入了解为什么 - 这是我发送错误的东西?如果是这样,什么?我是否以某种方式违反了请求?查看原始URL对于故障排除很有帮助,但我看不出如何.

例如:

HTTParty.get('http://example.com/resource', query: { foo: 'bar' })
Run Code Online (Sandbox Code Playgroud)

大概产生:

http://example.com/resource?foo=bar
Run Code Online (Sandbox Code Playgroud)

但我怎么检查这个?

在一个例子中我这样做:

HTTParty.get('http://example.com/resource', query: { id_numbers: [1, 2, 3] }
Run Code Online (Sandbox Code Playgroud)

但它没有用.通过实验,我能够产生这样的工作:

HTTParty.get('http://example.com/resource', query: { id_numbers: [1, 2, 3].join(',') }
Run Code Online (Sandbox Code Playgroud)

很明显,HTTParty构成查询字符串的默认方法与API设计者的首选格式不一致.这没关系,但确切地知道需要什么是很尴尬的.

ruby ruby-on-rails httparty

15
推荐指数
2
解决办法
4627
查看次数

在Rails 3中有选择地禁用asset.digest,因此外部站点可以包含样式表

目的:

我想要一个Tumblr博客从Rails应用程序的资产目录中提取CSS.

这意味着我可以使用SASS,Compass和其他全站点CSS来生成样式.

这也意味着如果在低级CSS中更新任何内容,tumblr.css将与常规CSS 一起重新生成cap deploy,并且Tumblr的外观将自动更改.

问题:

Rails 3资产管道为文件名添加了一个哈希,例如:

tumblr-c6ec969ce054623163b9404f6c8330e9.css

因此,Tumblr模板不能包含它,除非我每次更改时手动更新URL.

有没有办法有选择地禁用asset.digest一个文件,或者从SASS显式生成单个CSS文件,而无需通过整个资产管道?或者可能生成自动别名或其他什么?

tumblr ruby-on-rails-3.1 asset-pipeline

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

模板编译错误:'X' 不引用值

我收到以下错误:'ComponentManager' does not refer to a value编译从该父类继承的子类时:

template<typename ComponentManager>
class component_collection {
protected:
  int n_components;
  int n_versions;
  int first_blank;
  int last_used;
  std::vector<std::deque<shared_ptr<entity<ComponentManager>>>> entity_pointers;

public:
  component_collection(int n_c, int n_v) :
    n_components(n_c),
    n_versions(n_v),
    first_blank(0),
    last_used(0),
    entity_pointers(n_v, std::deque<shared_ptr<entity<ComponentManager>>>()) // <-- ERROR HERE
  {}

  ...

};
Run Code Online (Sandbox Code Playgroud)

我很困惑我应该如何在构造函数std::vector中用n_vstd::deques初始化。

子类声明了一个类似vectordeques 并按预期编译/工作(直到我将 s 添加vector<deque>到父类,即):

template<typename ComponentManager>
class test_component_collection : public component_collection<ComponentManager> {
  std::vector<std::deque<int>> values;

public:
  test_component_collection(int n_c, int n_v) :
      component_collection<ComponentManager>(n_c, n_v),
      values(n_v, …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 c++14

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

根据模型更改Rails部分的查找路径

我目前有一些模板代码,如下所示:

render partial: 'reference', locals: { object: object }
Run Code Online (Sandbox Code Playgroud)

Rails _reference.html.erbapp/views/application/和中寻找局部app/views/controller_name/

但是,此视图位于独立的控制器中,与object呈现的对象无关,因此不会在对象的view目录中查找app/views/object。我不能使用标准render object语法,而让Rails自动确定局部路径,因为我不想呈现局部路径object/object,而是呈现局部路径object/reference

我该如何解决?

我在想:

  • 一种使用render object语法的方式,但是指定了不同的部分名称;要么
  • 一个使用不同方法来查找部分的帮助函数,其用法如下:

    render partial: find_partial('reference', object), locals: { object: object }
    
    Run Code Online (Sandbox Code Playgroud)

我尝试过的

我试图使用第二种方法:

def find_partial(name, object)
  lookup_context.find name, [object.class.model_name.plural, 'application'], true
end
Run Code Online (Sandbox Code Playgroud)

非常接近我想做的事,即找到正确的部分,application/reference如果没有,则退回通用。但是,它会找到实际的ActionView::Template,并且render期望使用字符串而不是实际的模板对象。也许有一种方法可以获取正确的字符串?还是渲染一个实际的模板?

ruby-on-rails ruby-on-rails-3

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