GitLab配置文件中含#的Ruby on Rails密码字符串处理问题
GitLab gitlab.rb中SMTP密码含#字符的解决方法
gitlab.rb采用Ruby语法解析,当密码包含#字符时,用双引号包裹会出现解析异常(#被误判或截断),以下是两种可靠的解决方式:
使用单引号包裹密码字符串:
Ruby中单引号为字面量字符串,不会解析任何特殊字符,#会被当作密码的一部分完整识别。修改后的配置代码如下:gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.xxx.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "abc@xxx.com" gitlab_rails['smtp_password'] = 'X#X' # 单引号包裹,#被正常识别 gitlab_rails['smtp_domain'] = "xxx.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['gitlab_email_from'] = 'abc@xxx.com' gitlab_rails['gitlab_email_reply_to'] = 'abc@xxx.com' gitlab_rails['smtp_tls'] = true使用
%q{}语法包裹密码:
这是Ruby中另一种定义字面量字符串的方式,效果与单引号一致,适合密码中同时包含单引号和#的场景:gitlab_rails['smtp_password'] = %q{X#X}
注意:修改配置后需要执行gitlab-ctl reconfigure使配置生效,再用gitlab-ctl restart重启服务。
内容的提问来源于stack exchange,提问作者Sebastian Raubuch
相关产品推荐
相关产品推荐

