[英]How to access the Rails application configuration data with string interpolation
[英]How to pass string interpolation code to Rails Application Template CODE block?
根據Rails應用程序模板,這是將紅寶石代碼寫入文件的方式:
file 'path/to/my_file.rb', <<-CODE
class Object
def not_nil?
!nil?
end
def not_blank?
!blank?
end
end
CODE
但是,當我嘗試添加在<<-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
:Rails :: Generators :: AppGenerator:0x00005557a8d85090的未定義局部變量或方法first_name
(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
但它沒有幫助,導致完全相同的錯誤。
我該如何處理?
您正在嘗試將Heredoc 與字符串插值一起使用,顯然在嘗試插值first_name
失敗。 為防止heredoc字符串插值,請改用FOO<<-'CODE'
:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.