使用slack-notifier gem为rails app添加slack web hook

时间:2016-03-15 13:56:45

标签: ruby-on-rails

我使用Slack-Notifier gem将web挂钩添加到我的rails应用程序中。

每次在数据库中创建新用户时,我都希望触发一个Web挂钩。

我有以下内容,但我认为我的语法已关闭。我的IDE中出现以下错误。

enter image description here

def create
    @user = User.new(user_params)
    if @user.save
      @user.send_activation_email
      flash[:info] = "Welcome to Pallet! Please check your email to activate your account."
      SLACK_NOTIFIER.ping("New Directory User: #{@user: @user.email, @user.discipline}", username: 'notifier', icon_emoji: ':confetti_ball:")
      redirect_to charges_path 
    else
      render 'new'
    end
  end 

配置/初始化/ slack.rb

require 'slack-notifier'

    SLACK_NOTIFIER = Slack::Notifier.new( "https://hooks.slack.com/services/xxxxxx", 
    channel: '#directory-bot',
    username: 'notifier'
)

2 个答案:

答案 0 :(得分:1)

总而言之,这条线看起来有问题:

SLACK_NOTIFIER.ping("New Directory User: #{@user: @user.email, @user.discipline"}, username: 'notifier', icon_emoji: ':confetti_ball:")

我不确定此行的意图是什么,但此行中存在语法错误。例如,

  1. 结束花括号应该在字符串插值的双引号内。

  2. 此外,@user将转换为ruby对象。所以我认为你可能会给出user:而不是@user:

  3. 编写@user.email, @user.discipline时是否需要数组?您需要明确地将它们放在[]

  4. 不确定整个上下文,但我认为该行还有其他问题。

答案 1 :(得分:0)

如果您使用单引号打开字符串,则必须使用单引号将其关闭。

SLACK_NOTIFIER.ping("New Directory User: #{@user: @user.email, @user.discipline"}, username: 'notifier', icon_emoji: ':confetti_ball:')
                                                                                                               SINGLE QUOTE HERE TOO ^

如果您打开(,则必须将其关闭:

要求'slack-notifier'

SLACK_NOTIFIER = Slack::Notifier.new( "https://hooks.slack.com/services/xxxxxx", 
  channel: '#directory-bot',
  username: 'notifier'
)

代码中有更多错误只是那两个,我不打算指出它们,因为Stack Overflow不是语法验证的地方。

你真的需要在Ruby中使用速成课程来学习基本语法。