我想创建一个不使用i18n作为错误消息的自定义VagrantError
类。
Vagrant API docs显示如何创建客户错误消息
class MyError < Vagrant::Errors::VagrantError
error_key "my_error"
end
文档还说明:
如果您不想使用I18n,可以覆盖#initialize方法 并设置您自己的错误消息。
我尝试过以下方法:
class MissingPluginError < Vagrant::Errors::VagrantError
def initialize
error_message = "Vagrant Triggers plugin is required. Install using:"
error_message += "'vagrant plugin install vagrant-triggers'"
end
end
但是,我raise MissingPluginError.new
时产生的唯一输出是:
MissingPluginError
问题:如何创建不使用i18n作为错误消息的自定义VagrantError
类?
答案 0 :(得分:1)
我找到了办法。我还决定参数化错误消息,以便传入插件名称:
class MissingPluginError < Vagrant::Errors::VagrantError
def initialize(plugin)
error_message = "#{plugin} plugin is required. Install using:\n"
error_message += "'vagrant plugin install #{plugin}'"
StandardError.instance_method(:initialize).bind(self).call(error_message)
end
end
错误就像这样提出:
unless Vagrant.has_plugin?("vagrant-triggers")
raise MissingPluginError.new 'vagrant-triggers'
end
以下是我发现的一些source code,它向我展示了如何解决问题。