小编Jam*_*sen的帖子

是否有自动执行CSS spriting的库?

CSS Spriting可以真正帮助提高性能,但它并不是最容易阅读和维护的东西.是否有任何工具可以让我单独编码图像但是将它们聚合起来并用蒙太奇的正确子集替换HTML?

我特意想的是一个Ruby on Rails插件,但是如果有另一种语言的包,我会很乐意移植它.

css ruby optimization ruby-on-rails

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

如何使用cache_classes关闭的中间件中的域对象?

在rails开发环境中,cache_classes关闭以便您可以修改代码app/并查看更改而无需重新启动服务器.

但是,在所有环境中,中间件只创建一次.所以,如果我有这样的中间件:

class MyMiddleware

  def initialize(app)
    @app = app
  end

  def call(env)
    env['model'] = MyModel.first
  end

end
Run Code Online (Sandbox Code Playgroud)

我这样做config/environments/development.rb:

config.cache_classes = false # the default for development
config.middleware.use MyMiddleware
Run Code Online (Sandbox Code Playgroud)

然后我总会得到以下错误:

A copy of MyMiddleware has been removed from the module tree but is still active!
  /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:414:in `load_missing_constant'
  /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:96:in `const_missing'
  /Users/me/projects/my_project/lib/my_middleware.rb:8:in `call'
  /Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/middleware_stack.rb:72:in `new'
  ...
Run Code Online (Sandbox Code Playgroud)

问题是MyMiddleware实例是在系统加载时创建的,但是MyModel每次调用时都会重新加载该类.

我试图'MyModel'.constantize.first延迟绑定到类,直到方法调用时间,但这会将问题更改为新的问题:

You have a nil object when you didn't expect it!
The error occurred …
Run Code Online (Sandbox Code Playgroud)

ruby middleware ruby-on-rails

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

复合CouchDB密钥的最大值是多少?

我正在使用似乎是创建连接视图的常用技巧:

// a Customer has many Orders; show them together in one view:
function(doc) {
  if (doc.Type == "customer") {
    emit([doc._id, 0], doc);
  } else if (doc.Type == "order") {
    emit([doc.customer_id, 1], doc);
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下查询来获取单个customer和所有相关的Orders:

?startkey=["some_customer_id"]&endkey=["some_customer_id", 2]
Run Code Online (Sandbox Code Playgroud)

但现在我已经绑我的查询非常密切合作,以我的视图代码.有什么价值我可以把我的" 2"更清楚地说,"我希望一切都与这个客户联系在一起"?我想我已经看过了

?startkey=["some_customer_id"]&endkey=["some_customer_id", {}]
Run Code Online (Sandbox Code Playgroud)

但我不知道那{}一定的排序一切.

感谢cmlenz的连接方法.

关于整理CouchDB维基页面的进一步说明:

该查询startkey=["foo"]&endkey=["foo",{}]将匹配大多数数组键与第一个元素中的"foo",例如["foo","bar"]["foo",["bar","baz"]].但它不会匹配["foo",{"an":"object"}]

所以排序顺序{}了,但绝对不是最后的.

javascript couchdb mapreduce

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

我应该使用哪种适用于Ruby的CouchDB适配器?

我发现的一些选项是

我更喜欢GitHub上的项目,因为这使我最容易分叉和推送修复.所有这些都符合这一要求.

我已经习惯了Rails,所以我喜欢像ActiveRecord模型那样的东西.另一方面,我也不想在我和Couch之间做太多 - 毕竟,我使用它作为我的数据库是有原因的.

最后,它们似乎都得到了相当积极的维护(可能除外couch_foo).

所以我认为这归结为(诚然和不幸)主观:任何人都有与他们相处的好坏经历?

ruby couchdb ruby-on-rails

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

如何消除ember.js中嵌套路由的歧义?

我有两个资源都具有相同的子资源:

App.Router.map(function() {
  this.resource('post', function() {
    this.resource('comments', function() {
      this.route('new');
    });
  });

  this.resource('product', function() {
    this.resource('comments', function() {
      this.route('new');
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

问题是,ember路由器只根据当前和父路由构建路由对象的名称,而不是整个层次结构.因此,它会尝试路线都/posts/:id/comments/new/products/:id/comments/newApp.NewCommentRoute对象.我该怎么做才能解决这个问题?

这篇文章改编自GitHub问题.

javascript ember.js ember-router

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

有关使用Access后端运行Rails的任何提示?

我不禁要问,但我的客户端可能不会提供其他SQL(或类似SQL)的解决方案.我知道Access有一些SQL钩子; 他们是否足够基本的ActiveRecord?

后来:

我很欣赏使用其他数据库的所有建议,但请相信我:我已经尝试说服他们.有一个"已批准"列表,并且没有SQL数据库.将某些内容列入清单可能需要一年多的时间,此项目将在三周内完成.

ruby ms-access activerecord ruby-on-rails

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

Ruby 1.9如何处理源代码中的字符大小写?

在Ruby 1.8及更早版本中,

Foo
Run Code Online (Sandbox Code Playgroud)

是常量(类,模块或其他常量).而

foo
Run Code Online (Sandbox Code Playgroud)

是一个变量.关键区别如下:

module Foo
  bar = 7
  BAZ = 8
end

Foo::BAZ
# => 8

Foo::bar
# NoMethodError: undefined method 'bar' for Foo:Module
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但Ruby 1.9 允许使用UTF-8源代码.那么就?这个而言,"大写"还是"低级"呢?那么?(严格的子集)还是?foo

有一般规则吗?

后来:

Ruby-core已经在考虑一些数学运算符.例如

module Kernel
  def ?(num)
    ...
  end
  def ?(*args)
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

会允许的

x = ?2
y = ?(1, 45, ...)
Run Code Online (Sandbox Code Playgroud)

我愿意去看

my_proc = ? { |...| ... }

x ? my_enumerable  # same as my_enumerable.include?(x)

my_infinite_range = (1..?)

return 'foo' …
Run Code Online (Sandbox Code Playgroud)

ruby encoding utf-8

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

我如何在Ruby中进行防御性编程?

这是问题的一个完美示例:分类器gem打破了Rails.

**原始问题:**

作为一名安全专家,我担心的一件事是Ruby没有Java的包隐私.也就是说,这不是有效的Ruby:

public module Foo
  public module Bar
    # factory method for new Bar implementations
    def self.new(...)
      SimpleBarImplementation.new(...)
    end
    def baz
      raise NotImplementedError.new('Implementing Classes MUST redefine #baz')
    end
  end

  private class SimpleBarImplementation
    include Bar
    def baz
      ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

能够防止Foo :: BarImpl的猴子修补真的很棒.这样,依赖图书馆的人就知道没人搞错了.想象一下,如果有人改变了你的MD5或SHA1的实现!我可以调用freeze这些类,但我必须在逐个类的基础上进行调试,而其他脚本可能会在我完成保护应用程序之前修改它们,如果我对加载顺序不是谨慎的话.

Java为防御性编程提供了许多其他工具,其中许多工具在Ruby中是不可能的.(请参阅Josh Bloch的书以获得一个好名单.)这真的是一个问题吗?我应该停止抱怨并使用Ruby来实现轻量级的东西而不是希望"企业就绪"的解决方案吗?

(不,默认情况下,核心类没有在Ruby中冻结.见下文:)

require 'md5'
# => true
MD5.frozen?
# => false
Run Code Online (Sandbox Code Playgroud)

ruby security defensive-programming

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

如何编写跨越模型,控制器和视图的Rails mixin

为了减少我的小Rails应用程序中的代码重复,我一直在努力将我的模型之间的公共代码添加到它自己的独立模块中,到目前为止一直很好.

模型的东西相当简单,我只需要在开头包含模块,例如:

class Iso < Sale
  include Shared::TracksSerialNumberExtension
  include Shared::OrderLines
  extend  Shared::Filtered
  include Sendable::Model

  validates_presence_of   :customer
  validates_associated    :lines

  owned_by :customer

  def initialize( params = nil )
    super
    self.created_at ||= Time.now.to_date
  end

  def after_initialize
  end

  order_lines             :despatched

  # tracks_serial_numbers   :items
  sendable :customer

  def created_at=( date )
    write_attribute( :created_at, Chronic.parse( date ) )
  end
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是,现在,我将要有一些控制器和视图代码,这些代码在这些模型之间也是常见的,到目前为止,我有这个用于我的可发送内容:

# This is a module that is used for pages/forms that are can be "sent"
# either via fax, email, or printed.
module Sendable
  module Model …
Run Code Online (Sandbox Code Playgroud)

ruby refactoring ruby-on-rails dry

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

在Rails中,如何在不同的数据库上执行直接SQL代码?

情况就是这样.

我正在编写一个Rails应用程序,它将监视某些特定数据库的数据质量.为了做到这一点,我需要能够在这些数据库上执行直接的SQL查询 - 这当然与用于驱动Rails应用程序模型的数据库不同.简而言之,这意味着我无法使用通过ActiveRecord基本连接的技巧.

我需要连接的数据库在设计时是不知道的(即:我不能将它们的详细信息放在database.yaml中).相反,我有一个模型'database_details',用户将使用该模型输入应用程序将在运行时执行查询的数据库的详细信息.
因此,与这些数据库的连接确实是动态的,并且细节仅在运行时解析.

我怎样才能做到这一点?

谢谢,
罗洛

ruby activerecord ruby-on-rails

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