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

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

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

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

Q&A

解決済

1回答

3205閲覧

gemのインストール時に"thin"のエラーが発生する

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

0グッド

0クリップ

投稿2020/09/22 04:03

macbook pro 2020
ruby 2.6.6
Rails 5.2.4.4
Homebrew 2.5.2
gem 3.1.4

「現場で使えるRuby on Rails5速習実践ガイド」にてrailsについて学習中です。
メイラーの動作確認のためにgem"mailcatcher"をインストールしようとしたところ、下記のようなエラーが発生します。

terminal

1user@MBP ~ % gem install mailcatcher 2Building native extensions. This could take a while... 3ERROR: Error installing mailcatcher: 4 ERROR: Failed to build gem native extension. 5 6 current directory: /Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1/ext/thin_parser 7/Users/user/.rbenv/versions/2.6.6/bin/ruby -I /Users/user/.rbenv/versions/2.6.6/lib/ruby/site_ruby/2.6.0 -r ./siteconf20200922-90375-1qgo6zx.rb extconf.rb 8checking for main() in -lc... yes 9creating Makefile 10 11current directory: /Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1/ext/thin_parser 12make "DESTDIR=" clean 13 14current directory: /Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1/ext/thin_parser 15make "DESTDIR=" 16compiling parser.c 17parser.rl:112:17: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare] 18 assert(pe - p == len - off && "pointers aren't same distance"); 19 ~~~~~~ ^ ~~~~~~~~~ 20/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/assert.h:93:25: note: expanded from macro 'assert' 21 (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0) 22 ^ 23parser.rl:142:7: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration] 24 if (thin_http_parser_has_error(parser) ) { 25 ^ 26parser.rl:142:7: note: did you mean 'http_parser_has_error'? 27./parser.h:44:5: note: 'http_parser_has_error' declared here 28int http_parser_has_error(http_parser *parser); 29 ^ 30parser.rl:144:14: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration] 31 } else if (thin_http_parser_is_finished(parser) ) { 32 ^ 331 warning and 2 errors generated. 34make: *** [parser.o] Error 1 35 36make failed, exit code 2 37 38Gem files will remain installed in /Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1 for inspection. 39Results logged to /Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/thin-1.5.1/gem_make.out

エラーが出ている
/Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1/ext/thin_parser
の中のparser.rlファイルは以下のようになっています。

thin_parser/parser.rl 142行目〜 int thin_http_parser_finish(http_parser *parser) { if (thin_http_parser_has_error(parser) ) { return -1; } else if (thin_http_parser_is_finished(parser) ) { return 1; } else { return 0; } }

どこをどのように修正する必要があるのか分からないため、コードを修正することは避けました。

ひとまずgem"thin"の中でエラーが発生しているようなので、gem"thin"のアップデートを試みましたが、以下のような結果です。

terminal

1user@MBP ~ % gem update thin 2Updating installed gems 3Nothing to update

こういったエラーへの対応経験が浅く、昨日からネット記事等を参考に解決を試みていますが、解決できず質問させてもらった次第です。
解決方法をご教示いただけると幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

mailcatche公式のIssueにも同じ問題を報告している人がいました。
https://github.com/sj26/mailcatcher/

そこでthin公式を見ると対策が記載されていました。
https://github.com/macournoyer/thin/


方針としては下記2点かと思います。

  1. thin公式の対策を実施する
  2. 上記がうまく行かない場合、別のメールソフトで動作確認する

letter_openerや、letter_opener_webが有名です。
https://qiita.com/k-shogo/items/d85905535a64e82a3b2b#letter_opener

投稿2020/09/23 23:34

no1knows

総合スコア3365

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

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

退会済みユーザー

退会済みユーザー

2020/09/25 05:47

ご回答ありがとうございます。 thin公式のissuesを参考に、thinのver.1.6.4をインストールしました。 しかし、解決には至らず。 mail catcherのインストールを試みると、結局これまでと同様に Users/user/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/thin-1.5.1/ext/thin_parser thin-1.5.1の部分でエラーが出てしまいます。 コマンド "thin -v" に対しては "thin 1.6.4 codename Gob Bluth" が表示されることから、 新しくインストールしたバージョンが有効になっているようなのですが。 今後同様の問題で躓きそうなので、別のメールソフトで試す前に、解決したいところです。 元の質問内容とはまた別の問題になるかと思いますが、もし解決方法として思いつくことがありましたらご教示願います。
no1knows

2020/09/25 06:13

あんまり環境構築は得意じゃないのですが・・・thin 1.6.4はアプリで読み込んでいないようですね。 1.5.1だとかなり古いので、一度、gemfileに下記などのバージョンを指定して、bundle updateしてみるのはいかがでしょうか? gem 'thin, '~> 1.7.0'
退会済みユーザー

退会済みユーザー

2020/09/25 08:30

目的のmailcactherはアプリ内でのインストールではなくrbenvで管理されている管理ツールとしてのgemの中にインストールするというイメージでした。そのため、thin-1.6.4もアプリ内ではなく、gemの中にインストールしたところです。(初心者の知識なのでかなり的外れな意見かもしれません) ひとまず上記のような自分の理解がまず間違っていたのだろうと考え、コメント頂いたように、アプリ内で読み込ませるために、gemファイルに指定してbundle updateした結果 Gemfile.lockファイル内に、thin (~> 1.7.0)が記述されました。 コマンド'thin -v'を叩いた結果は'thin 1.7.2 codename Bachmanity'になります。 満を待してmailcatcherのインストールを試みましたが、 結果は同じくでした。。 ひとまず自分の今の知識ではほとんど理解できていないままコマンドを叩いてしまっているので、これ以上の深追いは避けようと思います。 ご紹介頂いた別のツール、活用させてもらいます。 学習する中で解決方法が見つかりましたら再度投稿したいと思います。 ご協力頂き本当にありがとうございました。
no1knows

2020/09/25 08:44

こちらこそお力になれずに申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問