質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2095閲覧

soxファイルが見つからないというエラーがターミナル上でおきたので解決の方お願いしたいです。

KURUMAEBI

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/08/23 13:05

編集2020/08/23 17:30

前提・実現したいこと

初の質問なので足りないソースコードなどあったら随時指摘してください。
railsで音楽アプリの投稿機能を作っています。
ユーザーが任意のmp3式の音声ファイルを選択してそれを投稿させようとしていますが実装中に以下のエラーメッセージが発生しました。
僕の勝手な認識だと、carrierwave-audioを入れればファイルのアップロードはうまくいくものと思っていたのですが、今回『soxを入れろ』というエラーメッセージが出ています。しかしgem 'ruby-sox', '~> 0.0.3'を入れてみてもまた同じエラーが発生して解決策がわかりません。

ruby '2.5.7'
gem 'rails', '~> 5.2.4', '>= 5.2.4.3'で開発を行っています。

発生している問題・エラーメッセージ

Sox::Error (No such file or directory - sox. Do you have `sox' installed?)

エラーメッセージ
soxファイルというのがどうやら見つからないそうなのですが、そもそもこのsoxファイルはgemとして入れるべきなのですか?それとも自分のPC上に入れるべきなのかがわかりません。

該当のソースコード

Gemfile

gem 'carrierwave'
gem 'carrierwave-audio', git: 'git@github.com:tanakaworld/carrierwave-audio.git'
gem 'ruby-sox', '~> 0.0.3'


schema.rb

create_table "tracks", force: :cascade do |t|
t.string "track_audio_id"
t.string "track_image_id"
t.string "title"
t.text "description"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end


audio_file_uploader.rb

class AudioFileUploader < CarrierWave::Uploader::Base

Include RMagick or MiniMagick support:

include CarrierWave::RMagick

include CarrierWave::MiniMagick

include CarrierWave::Audio

Choose what kind of storage to use for this uploader:

storage :file

storage :fog

Override the directory where uploaded files will be stored.

This is a sensible default for uploaders that are meant to be mounted:

def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

Provide a default URL as a default if there hasn't been a file uploaded:

def default_url(*args)

# For Rails 3.1+ asset pipeline compatibility:

# ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))

"/images/fallback/" + [version_name, "default.png"].compact.join('_')

end

Process files as they are uploaded:

process scale: [200, 300]

def scale(width, height)

# do something

end

Create different versions of your uploaded files:

version :thumb do

process resize_to_fit: [50, 50]

end

Add a white list of extensions which are allowed to be uploaded.

For images you might use something like this:

def extension_whitelist

%w(jpg jpeg gif png)

end

Override the filename of the uploaded files:

Avoid using model.id or version_name here, see uploader/store.rb for details.

def filename

"something.jpg" if original_filename

end

version :mp3 do
process :convert => [{output_format: :mp3}]

def full_filename(for_file) "#{super.chomp(File.extname(super))}.mp3" end

end

version :wav do
process :convert => [{output_format: :wav}]

def full_filename(for_file)
"#{super.chomp(File.extname(super))}.wav"
end
end
end


track.rb

class Track < ApplicationRecord
belongs_to :user
mount_uploader :track_image_id, ImagesUploader
mount_uploader :track_audio_id, AudioFileUploader
has_many :favorites, dependent: :destroy

with_options presence: true do validates :title validates :description validates :track_image_id validates :track_audio_id end

end


試したこと

gem 'ruby-sox', '~> 0.0.3'を入れてみたが同じエラーが出てしまった。

carrierwave-audioを入れる前carrierwave gemのみを使って画像だけ表示することはできました。

補足情報(FW/ツールのバージョンなど)```ここに言語を入力

コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SoX (Sound eXchange)は、Rubyとは独立したコマンドラインツール(とライブラリー)で、ruby-soxはRubyからそれらを利用するためのラッパーです。

OSなどが書かれていないので具体的な手順を示せませんが、SoX自体をインストールする必要があるのでは。

投稿2020/08/23 13:24

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KURUMAEBI

2020/08/23 14:38 編集

回答ありがとうございます。 macOS Sierra 10.12.6を使用していています。 ということはOSによって入れ方が異なるということでしょうか? もしそうならば、一度自分でOS名+SoXでインストールの違いを調べてみたいと思います。 行き詰まりましたらまた改めて、新しい質問をより詳しく作成したいと思います。
Daregada

2020/08/23 14:41

macOSならhomebrewいれてコマンド一発で入るんじゃないですかね。
KURUMAEBI

2020/08/23 17:48

返答が遅れて申し訳ありません。 homebrewにある記事を参考にして brew install lame brew install sox の順に入れてみたのですが、やはり同じ内容のエラーが出てしまいました。 うまくインストールできたと思うのですが、何かやり方など違う点がありましたらご指摘の方よろしくお願いします。
KURUMAEBI

2020/08/24 02:36

ご連絡ありがとうございます。 gitのchromaprintだけ見落としていました。 現在chromaprintを入れるためにadoptopenjdk8というものが必要らしいので先にインストールしています。進展がありましたらご報告させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問