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

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

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

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

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

2回答

518閲覧

HerokuでRubyアプリをデプロイする時にJAVA_HOMEの設定が通せない

fum01.ichikawa

総合スコア12

Ruby on Rails 5

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

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

1クリップ

投稿2019/06/25 08:31

編集2019/06/27 08:55

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について問題がある
考え方や確認するポイントについてご意見をいただけますと幸いです。

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

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

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

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

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

guest

回答2

0

私自身Herokuは概要しか知らないので、あくまでも考え方というかヒントです。

Ruby用のbuildpacksではおそらく、Javaがインストールされていないため
buildpacksの追加が必要です。

また、その場合Procfileの追加が必要かも知れません。


追記
別件でrubyのbuildpacksを見てたら
ここの部分
install_jvm(true)に改変するとJVMもインストールされる気配がありました。
もしかしたらforkしてやるとうまいこといけるかもしれません。

ダメっぽいですね。
いっそ、jruby使うようにした方が楽な気もします。

投稿2019/06/30 08:04

編集2019/07/01 00:13
asm

総合スコア15147

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

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

0

こんにちは。解決済みでしたらご容赦下さい。

1つずつ確認していくとしまして、JAVA_HOME is not directory. (RuntimeError) というメッセージが出ていますが、可能性として、まずはこちらの設定は大丈夫でしょうか?
バイナリではなくjava, javacコマンドのあるディレクトリになっていますでしょうか。

投稿2019/06/29 00:11

suama

総合スコア1997

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

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

fum01.ichikawa

2019/06/30 07:27 編集

@suamaさん 回答ありがとうございます。(反応が遅れてしまい申し訳ございません!) 環境変数の設定方法として、rails上で、 ・$/usr/libexec/java_home -V というコマンドでjava_homeの位置を確認 ``` Matching Java Virtual Machines (1): 12.0.1, x86_64: "Java SE 12.0.1" /Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home ``` という結果を元に、単純にこちらをHeroku上でもJAVA_HOMEの環境変数として設定しています。 suamaさんからご指摘から考えると、デプロイをする場合 ①現状 /Library/Java/JavaVirtualMachines以下に格納されているJDKデータをアプリの中どこかに移動 ②そのディレクトリを環境変数に設定する ということが必要ということでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問