HerokuでRubyアプリケーションをデプロイしたい
プログラミングを初級者です。Ruby on railsで作成したアプリケーションのHerokuでのデプロイにチャレンジしています。
JAVAライブラリを使うためのgem'rjb'のインストールが出来ずに詰まっています。
原因・確認が必要なポイントについてご意見をいただけますと幸いです。
(GoogleCloudVisionAPIで画像から文字を検索→文字を暗号化するという機能のアプリケーションを開発中です。)
■現状の整理
・Herokuへの登録は完了
・ログイン完了($heroku login)
・Herokuのアプリ作成も完了($ heroku create <アプリ名>)
ー環境変数の設定状況(下記については($heroku config 及びDashBoardから設定されていることを確認済)
・DATABASE_URL
・GOOGLE_APPLICATION_CREDENTIALS
・GOOGLE_CLOUD_KEYFILE
・GOOGLE_CLOUD_PROJECT
・JAVA_HOME
・PATH
■インストールが詰まっているgemについて
・日本語を変換する'zipang'というgemを活用しています。
ー参考ページー
https://qiita.com/tera_shin/items/e3d2326b9be573edac68
・'zipang'は gem 'kuromoji' と gem 'romaji' の二つのgemを組み合わせて作成されている。
・'kuromoji'はJavaのライブラリを活用したgemのため、gem 'rjb' を合わせて導入が必要
・ローカル環境では、JDKのインストールとJAVA_HOMEを設定することで正常に動いています。
ー参考ページーhttps://yshtak.tumblr.com/post/35539864342/rjb%E3%82%92%E4%BD%BF%E3%81%86%E3%81%9F%E3%82%81%E3%81%AB%E3%82%84%E3%82%8B%E3%81%93%E3%81%A8
$git push heroku masterでエラーが発生 ↓エラーの詳細
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /tmp/build_9468b224dba95e77a41de73c220ddec7/vendor/bundle/ruby/2.5.0/gems/rjb-1.5.9/ext /tmp/build_9468b224dba95e77a41de73c220ddec7/vendor/ruby-2.5.1/bin/ruby -r ./siteconf20190625-190-6ksk15.rb extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/tmp/build_9468b224dba95e77a41de73c220ddec7/vendor/ruby-2.5.1/bin/$(RUBY_BASE_NAME) extconf.rb:40:in `<main>': JAVA_HOME is not directory. (RuntimeError) extconf failed, exit code 1 Gem files will remain installed in /tmp/build_9468b224dba95e77a41de73c220ddec7/vendor/bundle/ruby/2.5.0/gems/rjb-1.5.9 for inspection. Results logged to /tmp/build_9468b224dba95e77a41de73c220ddec7/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/rjb-1.5.9/gem_make.out An error occurred while installing rjb (1.5.9), and Bundler cannot continue. Make sure that `gem install rjb -v '1.5.9' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: zipang was resolved to 0.0.1, which depends on kuromoji was resolved to 0.0.1, which depends on rjb ! ! Failed to install gems via Bundler. ! ! Push rejected, failed to compile Ruby app. ! Push failed
試したこと
①$ heroku labs:enable user-env-compile の実行
参考:https://codeday.me/jp/qa/20190615/1022735.html
→Couldn't find that feature. この機能は現在存在しない機能のようでした。
②echo $JAVA_HOMEでPathの再確認
→設定したPathは問題がないことを確認
③mkmf.logを確認・・・したものの、どこがポイントになるかわからず現在も調べています・・・
$ find ~/.rbenv | grep rjb | grep mkmf.log /Users/ユーザ名/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-18/2.5.0-static/rjb-1.5.9/mkmf.log -------------------- have_func: checking for getenv()... -------------------- yes "clang -o conftest -I/Users/ユーザー名/.rbenv/versions/2.5.1/include/ruby-2.5.0/x86_64-darwin18 -I/Users/ichikawafumishou/.rbenv/versions/2.5.1/include/ruby-2.5.0/ruby/backward -I/Users/ichikawafumishou/.rbenv/versions/2.5.1/include/ruby-2.5.0 -I. -I"/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/include" -I"/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/include/darwin" -I/Users/ichikawafumishou/.rbenv/versions/2.5.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -O3 -Wno-error=shorten-64-to-32 -pipe -I"/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/include" -I"/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/include/darwin" conftest.c -L. -L/Users/ichikawafumishou/.rbenv/versions/2.5.1/lib -L. -L/Users/ichikawafumishou/.rbenv/versions/2.5.1/lib -fstack-protector -L/usr/local/lib -lruby.2.5.1-static -framework Foundation -lpthread -ldl -lobjc " checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: extern int t(void); 5: int main(int argc, char **argv) 6: { 7: if (argc > 1000000) { 8: printf("%p", &t); 9: } 10: 11: return 0; 12: } 13: int t(void) { void ((*volatile p)()); p = (void ((*)()))getenv; return !p; } /* end */ -------------------- extconf.h is: /* begin */ 1: #ifndef EXTCONF_H 2: #define EXTCONF_H 3: #define HAVE_JNI_H 1 4: #define HAVE_NL_LANGINFO 1 5: #define HAVE_SETLOCALE 1 6: #define HAVE_GETENV 1 7: #define RJB_RUBY_VERSION_CODE 251 8: #endif /* end */
###ご意見をいただきたい点
・エラー文から、考え方として下記のような仮説を立てて解決策を探しています。
①gem'rjb'をインストールする際に環境変数に設定されたJAVA_HOMEを参照出来ていない?
②gem'rjb'のversionについて問題がある
考え方や確認するポイントについてご意見をいただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。