小编Hol*_*ola的帖子

这种弃用方法如何工作?

我试图理解这个电话:

deprecate :new_record?, :new?
Run Code Online (Sandbox Code Playgroud)

使用此弃用方法:

   def deprecate(old_method, new_method)
      class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{old_method}(*args, &block)
          warn "\#{self.class}##{old_method} is deprecated," + 
                "use \#{self.class}##{new_method} instead"
          send(#{new_method.inspect}, *args, &block)
        end
      RUBY
    end
Run Code Online (Sandbox Code Playgroud)

我真的不明白这里使用的元编程.但是,这只是别名new_record?方法的另一种方式- 所以实际上new_record?仍然可用,但是当你使用它时会发出警告吗?有人想解释一下这是如何工作的吗?

ruby activerecord metaprogramming ruby-on-rails

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

environment.rb中的config.gem

让我们说在Rails应用程序中你有一些你在你的应用程序中使用的宝石(我们将它们称为" 主要宝石 "),并且为了便携性而销售它们.

让我们说那些" 主要宝石 "也需要他们自己的宝石 - 我们称之为" 次要宝石 ".

当您设置environment.rb时,您必须说:

config.gem 'primary-gem'
Run Code Online (Sandbox Code Playgroud)

对于您直接使用的任何宝石.

但是,你还需要说...

config.gem 'secondary-gem'
Run Code Online (Sandbox Code Playgroud)

即使您没有在您的应用中明确使用该宝石?

或者它是否足以将gem包含在您的vendor/gems目录中,以便它被您的应用程序选中?

environment configuration rubygems ruby-on-rails

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