从Etc获取用户信息并不是要将信息添加到电子邮件中

时间:2016-05-10 15:20:57

标签: ruby

我正在撰写电子邮件脚本,并且需要在电子邮件中添加有关用户名称的信息,这可能非常简单,我只是在看(我不得不离开一些因安全而输出的信息):

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>

您可以看到它没有将用户添加到信息中..我不明白为什么?

1 个答案:

答案 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