小编wmj*_*att的帖子

在Ruby中继承类级实例变量?

我希望子类从其父级继承类级实例变量,但我似乎无法弄明白.基本上我正在寻找这样的功能:

class Alpha
  class_instance_inheritable_accessor :foo #
  @foo = [1, 2, 3]
end

class Beta < Alpha
  @foo << 4
  def self.bar
    @foo
  end
end

class Delta < Alpha
  @foo << 5
  def self.bar
    @foo
  end
end

class Gamma < Beta
  @foo << 'a'
  def self.bar
    @foo
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我想要这样输出:

> Alpha.bar
# [1, 2, 3]

> Beta.bar
# [1, 2, 3, 4]

> Delta.bar
# [1, 2, 3, 5]

> Gamma.bar
# [1, 2, 3, 4, 'a']
Run Code Online (Sandbox Code Playgroud)

显然,这段代码不起作用.基本上我想为父类继承的类级实例变量定义一个默认值.对于子子类,子类中的更改将是默认值.我希望这一切都能在不改变影响其父母或兄弟姐妹的一个类的价值的情况下发生.Class_inheritable_accessor给出了我想要的行为......但是对于一个类变量.

我觉得我可能会问得太多.有任何想法吗?

ruby oop inheritance scope instance-variables

19
推荐指数
3
解决办法
7134
查看次数

ExecJS失败,没有定义CoffeeScript

这一整天都在扼杀我.我有一个Rails应用程序,我正在从3.2升级到4.0.13,在开发中工作正常.在Rails 4的测试中,我得到了

ExecJS::ProgramError: ReferenceError: CoffeScript is not defined

在一系列的集成测试中.我没有在任何地方明确地调用或使用ExecJS,它似乎被调用coffee-script,反过来被调用coffee-rails.

我甚至不知道有什么有用的东西可以帮助你.如果我手动将我的所有coffeescript编译为javascript,这甚至会发生,所以我不认为这是我的咖啡才能实现这一点.

请随时询问东西,我会把它给你.

宝石的版本可能会触及这个:

rails 4.0.13
capybara 2.7.1
capybara-webkit 1.11.1
coffee-rails 4.2.1
coffee-script 2.4.1
execjs 2.7.0

rspec ruby-on-rails capybara execjs ruby-on-rails-4

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