2

SlackKitと Swiftで Slackbot を作成しました4.0Peter Zignegoの非常にシンプルでわかりやすいチュートリアルに従いました

彼はボットをHerokuにデプロイしました

表示される最初の問題は、特定のコレクションからランダムなアイテムを提供する配列拡張を使用することでした。

extension Array {
    /// Picks `n` random elements (partial Fisher-Yates shuffle approach)
    subscript (randomPick n: Int) -> [Element] {
      var copy = self
      for i in stride(from: count - 1, to: count - n - 1, by: -1) {
          copy.swapAt(i, Int(arc4random_uniform(UInt32(i + 1))))
      }
      return Array(copy.suffix(n))
    }
}

このコードではビルドの問題はなく、コードをプッシュしたいのですHerokuが、実行中にデプロイがスローされ、エラーが発生します。

error: use of unresolved identifier 'arc4random_uniform'

検索した後、Swift が報告したバグを見つけ、コードを次のように変更しました。

extension Array {
    /// Picks `n` random elements (partial Fisher-Yates shuffle approach)
    subscript (randomPick n: Int) -> [Element] {
        var copy = self
        for i in stride(from: count - 1, to: count - n - 1, by: -1) {
            #if os(Linux)
                copy.swapAt(i, Int(random() % (i + 1)))
            #else
                copy.swapAt(i, Int(arc4random_uniform(UInt32(i + 1))))
            #endif

         }
         return Array(copy.suffix(n))
    }
}

これで、コードが正常にプッシュおよびデプロイされHerokuました。

Slackしかし、次のように自分のチャンネルでボットを開始したい場合:

rf24-dev-mac-1:support-dialer konstantin$ heroku run:detached slackbot
Running slackbot on ⬢ support-dialer... done, run.1246 (Free)
Run heroku logs --app support-dialer --dyno run.1246 to view the output.

出力コマンドを実行すると、次のようになります。

2017-09-25T13:37:27.762135+00:00 heroku[run.1246]: Starting process with command `.build/release/support-dialer`
2017-09-25T13:37:28.335452+00:00 heroku[run.1246]: State changed from starting to up
2017-09-25T13:37:29.842073+00:00 heroku[run.1246]: Process exited with status 127
2017-09-25T13:37:29.779834+00:00 app[run.1246]: .build/release/support-dialer: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
2017-09-25T13:37:29.856440+00:00 heroku[run.1246]: State changed from up to complete

Slackbot が起動せず、デプロイ リンクをクリックするHerokuとエラーが表示されるため、これを修正するために何ができるかわかりません。

4

0 に答える 0