小编Seb*_*ian的帖子

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

Rails重新加载类和'已从模块树中删除但仍处于活动状态!' 引发ArgumentError

我在Rails应用程序中编写了自定义检测.我在这样的config/initializers/instrumentation.rb文件中启用它:

ActiveSupport.on_load(:action_controller) do
  include FooBar::ControllerRuntime
end
Run Code Online (Sandbox Code Playgroud)

但这导致我出错A copy of FooBar::ControllerRuntime has been removed from the module tree but is still active!.我弄清楚我可以通过两种方式解决它:

  • 添加路径可能是'FooBar :: ControllerRuntime is defined toconfig.autoload_one_paths`
  • 定义:to_prepare回调ActionController::Railtie

第二个解决方案如下所示:

config.to_prepare do
  ActionController.include FooBar::ControllerRuntime
end
Run Code Online (Sandbox Code Playgroud)

这个漫长的介绍引出了一个问题:哪种方式更好?首先,我禁止重新加载与我的路径相同的类FooBar::ControllerRuntime.有了第二个,我觉得搞砸是不好的ActionController::Railtie.正确的知道ActionController::Railtie没有定义,to_prepare但如果在下一个版本中会发生什么?

instrumentation ruby-on-rails ruby-on-rails-4.1

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

Popen得到新运行过程的pid

我想在后台运行一些应用程序,然后通过pid杀死它.

pipe = IO.popen("firefox 'some_url' 2>&1 &")
pipe.pid
Run Code Online (Sandbox Code Playgroud)

这段代码启动firefox并返回一些pid,但不幸的是它不是firefox的pid.

pipe = IO.popen("firefox")
pipe.pid
Run Code Online (Sandbox Code Playgroud)

这段代码启动firefox并返回mi一些pid,firefox的pid.是否有任何解决方案来启动外部应用程序并获得其pid?Firefox只是例如它可以是任何其他应用程序.我也试过像libs那样:Open3和Open4,但似乎效果相同.我也想知道'$!' bash变量对此有好的解决方案吗?在后台运行一些东西并读'$!',你怎么看?

ruby linux io pid popen

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

Rails控制台运行没有提示

当我运行我的rails控制台时,我得到了这样的东西:

Loading development environment (Rails 3.2.3)
/Users/sebastiannowak/.rvm/gems/jruby-1.6.7@global/gems/bundler-1.1.0/lib/bundler.rb:254 warning: shadowing outer local variable - path
Switch to inspect mode.
Time.now
Time.now
2012-06-27 09:27:21 +0200
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我可以与控制台进行交互,但它非常不舒服.我运行JRuby 1.6.7.有人有这样的问题吗?

console ruby-on-rails jruby

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

每个环境的Clojure数据库设置

我正在使用monger从我的Clojure简单应用程序中获取并保存MongoDb中的一些数据.我有很强的Ruby on Rails背景,所以我熟悉每个环境的数据库设置(开发,测试,生产).我希望在Clojure中有类似的东西.如何将环境添加到我的代码中?我想用Clojure方式,代码作为数据,没有任何yaml文件.如果它发生变化,我正在使用Leiningen.

clojure

6
推荐指数
2
解决办法
2262
查看次数

从字符串中获取数字

我有一个字符串:

"1|2 3 4 oh 5 oh oh|e eewrewr|7|".
Run Code Online (Sandbox Code Playgroud)

我想得到第一个管道(|)之间的数字,返回"2 3 4 5".

任何人都可以帮助我使用正则表达式来做到这一点吗?

ruby regex

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

测试使用会话的 Sinatra 应用程序

如何测试使用会话的 Sinatra 应用程序?

get "/", {}, {'rack.session' =>  { 'foo' => 'blah' } }
Run Code Online (Sandbox Code Playgroud)

这段代码对我不起作用,我在我的应用程序中有“启用:会话”。

testing session rack sinatra

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

Extjs商店找到所有

Ext.data.Storefind方法的文档说:

通过特定字段值查找此商店中第一个匹配记录的索引.

我的问题是如何在这个商店中找到所有匹配记录的索引?

javascript extjs extjs4

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

测试使用 url_for 方法的助手

我有类似的辅助方法:

def my_helper(builder, name, order)
  options = {
    builder.search_key => builder.search_attributes.merge('sort' => order)
  }
  link_to name, url_for(options)
end
Run Code Online (Sandbox Code Playgroud)

Helper 向当前 url 和构建链接添加了一些参数(这里是简化示例)。当我尝试使用 RSpec 测试此方法时,出现异常ActionController::RoutingError: No route matches {:search=>{"sort"=>"published_at.asc"}}。如何存根当前链接、路径、控制器、动作?

rspec

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

pmap和线程数

user=> (.. Runtime getRuntime availableProcessors)
2
Run Code Online (Sandbox Code Playgroud)

并评估此示例:http://clojuredocs.org/clojure_core/clojure.core/pmap#example_684我得到

user=> (time (doall (map long-running-job (range 4)))) 
"Elapsed time: 12000.621 msecs"
(10 11 12 13)
user=> (time (doall (pmap long-running-job (range 5))))
"Elapsed time: 3000.454 msecs"
(10 11 12 13 14)
user=> (time (doall (pmap long-running-job (range 32))))
"Elapsed time: 3014.969 msecs"
(10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 …
Run Code Online (Sandbox Code Playgroud)

clojure

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

MongoMapper has_many关联

我有mongomapper协会的问题.我有一个类名User和其他名为Model的.用户有很多型号,但......

user = User.first
=> <User ...
user.models
=> []
Model.find_by_user_id(user.id.to_s)
=> <Model ...
Model.find_by_user_id(user.id.to_s).user == user
=> true
Run Code Online (Sandbox Code Playgroud)

类代码(简化):

class User
  include MongoMapper::Document

  # some keys definition

  many :models
end

class Model
  include MongoMapper::Document

  # some keys definitions

  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

ruby ruby-on-rails mongodb mongomapper

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

如何返回传递给Clojure函数的空集合的值

我有一些函数可以从传递的映射返回一些键的最大值.我希望0在传递集合为空时返回.当然我可以使用一些条件,但想知道是否有更先进的技术呢?

(defn max-id [c]
  "Using as: (max-id [{ :id 1 }, { :id 2 }])"
  (if (empty? c)
    0
    (apply max (map :id c))))
;;;
(max-id []) => 0
(max-id [map-one map-two]) => 1024
Run Code Online (Sandbox Code Playgroud)

clojure destructuring

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