小编d11*_*wtq的帖子

缺少主机链接!请提供:host参数或设置default_url_options [:host]

我现在谷歌搜索大约90分钟仍然没有得到答案.我在哪里设置default_url_options?我已经将其设置为config.action_mailer.default_url_options在其他地方解决此相同的错误,但现在我在尝试在RSpec规范中使用URL帮助程序时遇到此错误.我不知道它在哪里设置default_url_options.

 Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/)
 RuntimeError:
   Missing host to link to! Please provide :host parameter or set default_url_options[:host]
 # ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

这段代码与emails/ActionMailer无关,它恰好需要一个URL而不是一个路径.

有任何想法吗?

rspec ruby-on-rails

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

Rails 3:yield/content_for有一些默认值?

有没有办法检测是否#content_for实际应用于yieldRails中的作用域?

一个典型的例子是:

<title><%= yield :page_title %></title>
Run Code Online (Sandbox Code Playgroud)

如果模板没有设置

<% content_for :page_title, "Something here" %>
Run Code Online (Sandbox Code Playgroud)

有没有办法让布局把其他东西放在那里?

我尝试#content_for在布局本身中定义它,但这只会导致文本加倍​​.我也尝试过:

<%= (yield :page_title) or default_page_title %>
Run Code Online (Sandbox Code Playgroud)

#default_page_title视图帮助器在哪里.

这只是让街区完全空了.

ruby yield ruby-on-rails

59
推荐指数
4
解决办法
2万
查看次数

获取当前ruby进程内存使用情况

我想将Logger输出格式化为包含当前内存使用情况,这是长时间运行过程的一部分.

Ruby有没有内置的东西,有点像PHP的memory_get_usage()?或者我是否必须执行一些shell命令才能从中获取它ps

ruby memory process

52
推荐指数
5
解决办法
2万
查看次数

Emacs ido-mode并在目录中创建新文件,它在我输入时不断更改目录

在emacs中使用ido-mode时,当我尝试在目录中创建一个新文件时,它会妨碍我:使用:( C-x C-f开始键入一个新文件名,但尚不存在)RET

通常这应该创建一个新文件,但是当我有ido模式时,我必须快速输入新文件名,否则ido-mode决定将我移动到一个目录中,该目录中有一个匹配名称的文件,导致我打开文件,而不是创建一个新文件.

有没有人知道如何强制ido-mode以避免查看你当前所在目录以外的目录?

emacs ido-mode

37
推荐指数
2
解决办法
3031
查看次数

Vim选择多行的结尾(块模式,但结束列的变化)

在vim中有什么办法可以选择所有这些行的结尾吗?(我只是在这些截图中显示了行的结尾).

在块模式下,如果底线比其余部分长,我可以全部获得它们,但如果底线较短,则较长的线被截断.

编辑| 我猜我可以在选择之前用空格填充底线,然后再删除空格.

在此输入图像描述 在此输入图像描述

vim

35
推荐指数
4
解决办法
2万
查看次数

像tap一样的组合方法,但能够返回不同的值吗?

我正在经历一个试图避免临时变量和过度使用条件的阶段,我可以使用更流畅的编码风格.我非常喜欢#tap在我想要获得我需要返回的值的地方使用,但在我返回它之前先做一些事情.

def fluid_method
  something_complicated(a, b, c).tap do |obj|
    obj.update(:x => y)
  end
end
Run Code Online (Sandbox Code Playgroud)

比.程序:

def non_fluid_method
  obj = something_complicated(a, b, c)
  obj.update(:x => y)
  obj # <= I don't like this, if it's avoidable
end
Run Code Online (Sandbox Code Playgroud)

显然上面的例子很简单,但这仍然是ruby社区中非常常见的编码风格.我有时会使用#inject一系列过滤器传递一个对象:

things.inject(whatever) do |obj, thing|
  thing.filter(obj)
end
Run Code Online (Sandbox Code Playgroud)

比.程序:

obj = whatever
things.each do |thing|
  obj = thing.filter(obj)
end
obj
Run Code Online (Sandbox Code Playgroud)

现在我正面临着如下条件的重复使用,并寻找一种更流畅的方法来处理它:

def not_nice_method
  obj = something_complex(a, b, c)
  if a_predicate_check?
    obj.one_more_method_call
  else
    obj
  end
end
Run Code Online (Sandbox Code Playgroud)

(稍微)更清洁的解决方案是以复制为代价避免临时变量:

def not_nice_method
  if a_predicate_check?
    something_complex(a, b, …
Run Code Online (Sandbox Code Playgroud)

ruby theory combinators

29
推荐指数
3
解决办法
3833
查看次数

3.days.ago,2.hours.from_now等没有Rails?

有些书中提到的一些宝石与装饰数字#days,#megabytes,#minutes等等.这是只有在的ActiveSupport,还是有提供此功能用于(小)无轨宝石小宝石?我想在一个小小的宝石中使用这个功能作为DSL的一部分.

ruby rubygems ruby-on-rails numeric activesupport

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

如何检查响应链?

我在基于文档的架构的单个窗口中做了一些疯狂的多个文档,我完成了95%.

我有这种双层文档架构,其中父文档打开并配置窗口,提供"子"文档列表.当用户选择其中一个子项时,该文档使用相同的窗口控制器打开,并在窗口中放置一个NSTextView.窗口控制器的文档关联被更改,以便"编辑的点"和窗口标题跟踪当前选择的文档.想想Xcode项目以及编辑其中的不同文件时会发生什么.

要以伪表格形式放置代码,在打开子文档时,会在父文档中调用此类方法.

-(void)openChildDocumentWithURL:(NSURL *)documentURL {
  // Don't open the same document multiple times
  NSDocument *childDocument = [documentMapTable objectForKey:documentURL];
  if (childDocument == nil) {
    childDocument = [[[MyDocument alloc] init] autorelease];
    // Use the same window controller
    // (not as bad as it looks, AppKit swaps the window's document association for us)
    [childDocument addWindowController:myWindowController];
    [childDocument readFromURL:documentURL ofType:@"Whatever" error:NULL];

    // Cache the document
    [documentMapTable setObject:childDocument forKey:documentURL];
  }

  // Make sure the window controller gets the document-association swapped if the doc …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nsdocument nsresponder

21
推荐指数
3
解决办法
8092
查看次数

Common Lisp Double-Backquote,Unquote,Quote,Unquote sequence?

我正在阅读Let Over Lambda,它涉及一些非常深层次的宏创作.它很吸引人,而且我主要是为了跟上它.

在第4章中,Hoyte实现了用于CL-PPCRE匹配和替换函数的读取器宏,这样您就可以执行以下操作:

(#~m/(foo|bar)\d+/ "Some foo99")    ; matches!
(#~s/foo(\d+)/bar\1/, "Some foo99") ; "Some bar99
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我们定义了一个使用双反引号的宏,因为它实际上是由一个包装宏扩展的,它需要引用的值(它返回一个lambda形式).在准引用列表中,有一些使用以下序列,',varname,我无法理解.初步,'在这做什么?

(defmacro! pcre/match-lambda-form (o!args)
  "Expands to a lambda that applies CL-PPCRE:SCAN"
  ``(lambda (,',g!str)
      (cl-ppcre:scan ,(car ,g!args)
                     ,',g!str)))
Run Code Online (Sandbox Code Playgroud)

实际上,defmacro为了清楚起见,如果你还没有读过这本书,我可能会更好地将其提炼为仅使用的东西.str是一个符号,args是一个列表:

(defmacro pcre/match-lambda-form (args)
  "Expands to a lambda that applies CL-PPCRE:SCAN"
  ``(lambda (,',str)
      (cl-ppcre:scan ,(car ,args)
                     ,',str)))
Run Code Online (Sandbox Code Playgroud)

引号基本上是双引用内部部分,因此结果可以不加引号两次?有效地'str进入扩展形式,而不仅仅是str

编辑| 感谢Terje D.和一些在REPL中玩游戏,这几乎是这样的情况:

(defvar a 42)

(equal ``(,,a)  '(list 42)) ; T
(equal ``(,a)   '(list a)) …
Run Code Online (Sandbox Code Playgroud)

lisp macros common-lisp

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

EventEmitter位于Promises链中间

我正在做的事情涉及按顺序运行一系列child_process.spawn()(进行一些设置,然后运行调用者感兴趣的实际多肉命令,然后进行一些清理).

就像是:

doAllTheThings()
  .then(function(exitStatus){
    // all the things were done
    // and we've returned the exitStatus of
    // a command in the middle of a chain
  });
Run Code Online (Sandbox Code Playgroud)

在哪里doAllTheThings()是这样的:

function doAllTheThings() {
  runSetupCommand()
    .then(function(){
      return runInterestingCommand();
    })
    .then(function(exitStatus){
      return runTearDownCommand(exitStatus); // pass exitStatus along to return to caller
    });
}
Run Code Online (Sandbox Code Playgroud)

在内部我正在使用child_process.spawn(),它返回一个EventEmitter,我实际上将close事件的结果runInterestingCommand()返回给调用者.

现在我还需要将data来自stdout和stderr的事件发送给调用者,调用者也来自EventEmitters.有没有办法让(Bluebird)Promises使用它,或者它们只是阻碍了发出多个事件的EventEmitters?

理想情况下,我希望能够写:

doAllTheThings()
  .on('stdout', function(data){
    // process a chunk of received stdout data
  })
  .on('stderr', function(data){ …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird

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