Ruby 和 Rails 貌似找不到直接的方法,不过可以尝试在底层的 class 里面定义一个方法,用当前 class 的所有实例变量减去 superclass 里面的所有实例变量,这样就获取到了 当前 class 里面定义的实例变量了。如果两个 class 之间有重合的实例变量就是继承过来的
Example
class Base
def initialize
@base = "base"
end
def current_class_instance_variables
instance_variables - self.class.superclass.new.instance_variables
end
def current_class_inherited_instance_variables
self.class.superclass.new.instance_variables & instance_variables
end
end
class Application < Base
def initialize()
super
@application = "application"
end
end
class Post < Application
def initialize()
super
@post = "post"
end
end
class Article < Application
def initialize()
super
@article = "article"
end
end
Article.new.current_class_instance_variables
Post.new.current_class_instance_variables
Application.new.current_class_instance_variables
Base.new.current_class_instance_variables
Article.new.current_class_inherited_instance_variables
Post.new.current_class_inherited_instance_variables
Application.new.current_class_inherited_instance_variables
Base.new.current_class_inherited_instance_variables
输出结果如下
但是这样也有很多问题解决不了,比如在某个方法里面添加的实例变量,继承了一些抽象类之类或者实例变量被重写了的问题。
我和 3 楼理解的一样,实例变量不会被继承,只能通过这些奇技淫巧来处理
现在我用 asdf 一把梭管理这些环境的版本了。
期望尽快支持远程 +1
啊 是的,当时不知道有这个东西所以就写了这个东西去处理
进了 404
页面之后 js
加载出现了问题。感觉和 turbolinks
有关系
uh 少加载了这个 js
<script async="" src="//www.google-analytics.com/analytics.js"></script>
2.7.2
刚试了下只输入 IRB.send :easter_egg
返回随机结果,可能是静态的也可能是动态的
@afly @EvanYa @lanzhiheng 感谢大家的推荐
《码破苍穹》码工强者竟然恐怖如斯!
可以出书了。《赌怪自传》
是这样的,笔误了
哈哈,对的 想的太复杂了