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

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

ただいまの
回答率

91.36%

  • Ruby

    5198questions

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

  • Ruby on Rails 4

    2156questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • MacOS(OSX)

    1371questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • RubyGems

    247questions

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

「failed to load encoding」エラーによりgemコマンド,rakeコマンド等がうまく動かなくなる

受付中

回答 0

投稿 2017/11/22 11:46

  • 評価
  • クリップ 0
  • VIEW 49

お世話にになっております。
掲題の問題を解決したく、質問させていただきました。

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

業務でruby2.3.0を使用しております。
とあるgemをインストールしようとgemを実行しましたが、以下のようにエラーが発生し、失敗してしまいました。

↓bundlerで実施した例。他のgemでも同じようにエラーが出ます。

gem install bundler
/Users/username/.rbenv/versions/2.3.0/lib/ruby/2.3.0/psych.rb:377: warning: failed to load encoding (UTF-16BE); use ASCII-8BIT instead
ERROR:  Loading command: install (LoadError)
    failed to load encoding (Windows-31J)
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

その後、gem uninstall gem list gem searchなどのコマンドを実行しましたが、全て上記のような状態になってしまいました。

また、rakeタスク(railsからunicorn起動)を実行した時も同じエラーが出ましたが、こちらは表示される文字コードが異なっています。

bundle exec rake unicorn:start
/Users/username/.rbenv/versions/2.3.0/lib/ruby/2.3.0/x86_64-darwin15/json/ext/parser.bundle: warning: failed to load encoding (utf-16be); use ASCII-8BIT instead
/Users/username/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sass-3.5.1/lib/sass/util.rb:712: warning: failed to load encoding (UTF-16BE); use ASCII-8BIT instead
rake aborted!
Bundler::GemRequireError: There was an error while trying to load the gem 'sass-rails'.
Gem Load Error is: code converter not found (UTF-8 to ASCII-8BIT)

該当のソースコード

↑のunicornを起動するスクリプトを参考情報として以下に記載します。以下記事から拝借したものです。

https://qiita.com/Salinger/items/5350b23f8b4e0dcdbe23#unicorn-%E3%81%AE%E8%A8%AD%E5%AE%9A

worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true

listen '/tmp/unicorn.sock'
pid    '/tmp/unicorn.pid'

before_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end

  defined?(ActiveRecord::Base) and
      ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  end

  defined?(ActiveRecord::Base) and
      ActiveRecord::Base.establish_connection
end

stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])

試したこと

  • エラーメッセージで検索しましたが、有力な情報にはたどり着けませんでした。
    色々調べた結果、下記が自分の症状に1番類似している状態でしたが、解答者が提示されているruby-enc-extraが見つからない状態です。

https://github.com/openwrt/packages/issues/3454

  • 試しにrubyバージョンを2.4.0に変更し、上記コマンドを実行した結果は以下のようになりました。2.3.0のときとは差異がありました。(ただ、業務で使用する2.3.0でエラーを解消する方向で対応したいです。)
gem list bundler
ERROR:  Loading command: list (LoadError)
    cannot load such file -- io/wait
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

補足情報(言語/FW/ツール等のバージョンなど)

各バージョンは以下の通りとなります。gemのバージョン確認時は上記エラーが表示されながらバージョン名が出力されました。

ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]

rails -v
Rails 4.2.9

rbenv --version
rbenv 1.1.1

gem -v
/Users/username/.rbenv/versions/2.3.0/lib/ruby/2.3.0/psych.rb:377: warning: failed to load encoding (UTF-16BE); use ASCII-8BIT instead
2.6.13

# MacOSはSierra、シェルの使用言語は`ja_JP.UTF-8`です。
sw_vers
ProductName:    Mac OS X
ProductVersion:    10.11.6
BuildVersion:    15G17023

env | grep LANG
LANG=ja_JP.UTF-8

また、rubyの文字コードはUTF-8でなんらか変更はしていないです。

irb
irb(main):001:0> s="あいうえお"
=> "あいうえお"
irb(main):002:0> p s.encoding
#<Encoding:UTF-8>
=> #<Encoding:UTF-8>

色々調べてもなかなか有力な情報が出てこず、こちらで質問させていただきました。
ぜひお力をお貸しいただけますでしょうか。何卒よろしくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

ただいまの回答率

91.36%

関連した質問

同じタグがついた質問を見る

  • Ruby

    5198questions

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

  • Ruby on Rails 4

    2156questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • MacOS(OSX)

    1371questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • RubyGems

    247questions

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