【发布时间】:2019-10-22 16:19:49
【问题描述】:
根据Rails Application Templates,这是将 ruby 代码写入文件的方法:
file 'path/to/my_file.rb', <<-CODE
class Object
def not_nil?
!nil?
end
def not_blank?
!blank?
end
end
CODE
但是,当我尝试在 <<-CODE 和 CODE 之间添加包含字符串插值的代码时,它在第一次出现时失败。
我的file 电话:
file 'lib/person.rb', <<-CODE
# frozen_string_literal: true
class Person
def initialize(first_name, last_name)
@full_name = "#{first_name.capitalize} #{last_name.capitalize}#"
end
end
CODE
错误信息:
template.rb:50:in
apply: 未定义的局部变量或方法first_name用于 Rails::Generators::AppGenerator:0x00005557a8d85090 (NameError)
我的理解是模板生成器尝试执行插值代码。
我尝试的只是转义 " 双引号,例如:
file 'lib/person.rb', <<-CODE
# frozen_string_literal: true
class Person
def initialize(first_name, last_name)
@full_name = \"#{first_name.capitalize} #{last_name.capitalize}#\"
end
end
CODE
但它没有帮助,导致完全相同的错误。
我该如何处理?
【问题讨论】:
-
你可以转义
#,而不是"
标签: ruby-on-rails ruby heredoc