我正在撰写电子邮件脚本,并且需要在电子邮件中添加有关用户名称的信息,这可能非常简单,我只是在看(我不得不离开一些因安全而输出的信息):
def get_user
user = Etc.getlogin
@esd_user = user.split('_').first.capitalize + ' ' + user.split('_').last[0].upcase
end
def pend
#-< Pending emails >-#
email = <<-_END_
V/R,
#{@esd_user}
DOL IT ESD
_END_
#copy(email)
end
在@esd_user
部分,它无法正确添加用户信息示例:
irb(main):004:0> def get_user
irb(main):005:1> user = Etc.getlogin
@esd_user = user.split('_').first.capitalize + ' ' + user.split('_').last[0].upcase
irb(main):007:1> end
=> :get_user
irb(main):008:0> def email
irb(main):009:1> <<-_END_
irb(main):010:1" V/R,
irb(main):011:1" #{puts @esd_user}
irb(main):012:1" DOL IT ESD
irb(main):013:1" _END_
irb(main):014:1> end
=> :email
irb(main):015:0> email
=> "V/R,\n\nDOL IT ESD\n"
irb(main):016:0>
您可以看到它没有将用户添加到信息中..我不明白为什么?
答案 0 :(得分:1)
您的首要问题是您从未致电get_user
,因此没有为@esd_user
分配任何值,其值为nil
。你的第二个问题出现在第四行::
def email
<<-_END_
V/R,
#{puts @esd_user}
DOL IT ESD
_END_
end
puts
将其参数打印到$stdout
并返回nil
。您希望将@esd_user
的值插入到该行的字符串中。您不想在该行上打印任何内容。摆脱puts
:
def email
<<-_END_
V/R,
#{@esd_user}
DOL IT ESD
_END_
end
@esd_user = "foobar"
puts email
# -> V/R
# foobar
# DOL IT ESD