MAGAZINE
ルーターマガジン
slackのファイル共有でソースコードがバイナリとして扱われる問題と対策

こんにちは、エンジニアの yamauchi です。
今回は、slackでファイル共有を行った際にバイナリファイルとして認識される問題と
その対処法について調査したので共有します。
slack上でrubyファイルがバイナリファイルとして扱われた
実行可能なrubyのファイル
sample1.rb と sample2.rb をファイル共有しようとするとバイナリになっていました。
使用したファイル
sample1.rb
変数をいくつか定義して”あ”と出力するソースコード
a = 1
b = 1
c = 1
puts "あ"
sample2.rb.rb
ActiveRecordを使用してmysqlに接続するソースコード
require 'active_record'
#DB接続設定
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost", #ローカルのDBに接続します。
username: "root", #ユーザー名
password: "", #設定したMySQLのパスワード
database: "training", #接続したいDB名
)
class User < ActiveRecord::Base
end
puts User.find_by(name: 'john').name
バイナリファイルとして認識される
slackではファイル共有の方法として
・テキストスニペット
・ファイルをドラックアンドドロップ
の二種類がありますが、今回はどちらの方法でもバイナリと表示されました。
また、テキストスニペットを使用した際はファイルタイプとしてrubyを選択しています。



バイナリにならないように試したこと
ドラックアンドドロップ
sample1.rb と sample2.rb について拡張子を消してドラックアンドドロップで確認すると
それぞれファイルタイプがFortranとC++になっていました。
どうやらslackの内部で自動でファイルタイプを推測しているようです。

テキストスニペット
テキストスニペットのスニペットを作成する画面にて
ファイルのタイプをドラックアンドドロップで認識されたものに合わせてみました。
sample1.rb sample2.rbについて
それぞれFortranとC++にしたところバイナリとならずにアップロードできました。
)



テキストスニペットのタイトル
前述以外の方法でおそらく一番簡単にファイル共有する方法です。
テキストスニペットのタイトルに拡張子の付かない名前を入れ、タイプに種類を自動検出
を選択することでテキストとしてアップロードできました。


まとめ
-
slackの内部で自動でファイルタイプを推測する仕様がある
-
slack内部のファイルタイプと、テキストスニペットで選択したタイプ、またはドラックアンドドロップしたファイルの拡張子が異なる場合、バイナリとして認識されてしまう
- バイナリを回避する方法はslack内部のファイルタイプに合わせるか、テキストとして共有する
CONTACT
お問い合わせ・ご依頼はこちらから