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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

3767閲覧

Ruby on Rails × React の組み合わせがAmazon Elastic Beanstalkでデプロイできない

nmatsumoto4

総合スコア8

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2017/03/29 10:02

###前提・実現したいこと
Ruby on Rails+React.jsでWEBアプリを作成しています。
そこで作成したアプリをAmazon Elastic Beanstalkでデプロイしたいです。
しかし、以下のような問題が起きデプロイできません。

同じ組み合わせを今後やる方も多いと思われます。
すでに同じ道を通って解決していた方々は是非ともご教示お願いいたします。

###発生している問題・エラーメッセージ
eb createを行うと以下のエラーメッセージが表示されて失敗します。

エラーメッセージ ERROR: [Instance: i-07f73baf09c9e180f] Command failed on instance. Return code: 1 Output: (TRUNCATED)...ry rake aborted! JSON::ParserError: A JSON text must at least contain two octets! /opt/rubies/ruby-2.3.1/bin/bundle:23:in `load' /opt/rubies/ruby-2.3.1/bin/bundle:23:in `<main>' Tasks: TOP => webpacker:compile (See full trace by running task with --trace). Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/11_asset_compilation.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI. INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1]. WARN: Environment health has transitioned from Pending to Degraded. Command failed on all instances. Initialization completed 19 seconds ago and took 4 minutes. ERROR: Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.

###該当のソースコード
Webアプリの実行手順はこちらに沿って行い、ローカルで動作確認及びHerokuで動作確認はできています。

###試したこと
調べたところnpm installを実行しなければならないことがわかり、以下の方法を試してみましたが、
http://qiita.com/_muraham/items/22dec19e5d069560b40f

今度は以下のようにタイムアウトとなり実行できませんでした。

MacBook-Pro:eb-test$ eb create rails-beanstalk-env17 --timeout 20 --single Creating application version archive "app-bc56-170329_033605". Uploading eb-test/app-bc56-170329_033605.zip to S3. This may take a while. Upload Complete. Environment details for: rails-beanstalk-env17 Application name: eb-test Region: ap-northeast-1 Deployed Version: app-bc56-170329_033605 Environment ID: e-mumcmkqqas Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Puma with Ruby 2.3 running on 64bit Amazon Linux/2.3.2 Tier: WebServer-Standard CNAME: UNKNOWN Updated: 2017-03-28 18:36:10.036000+00:00 Printing Status: INFO: createEnvironment is starting. INFO: Using elasticbeanstalk-ap-northeast-1-422042246715 as Amazon S3 storage bucket for environment data. INFO: Created EIP: 13.112.215.43 INFO: Created security group named: awseb-e-mumcmkqqas-stack-AWSEBSecurityGroup-KRLMNA1W56IO INFO: Environment health has transitioned to Pending. Initialization in progress (running for 8 seconds). There are no instances. INFO: Added instance [i-08b75a6cc704f1b11] to your environment. INFO: Waiting for EC2 instances to launch. This may take a few minutes. WARN: Environment health has transitioned from Pending to Severe. Initialization in progress on 1 instance. 0 out of 1 instance completed (running for 15 minutes). None of the instances are sending data. ERROR: The operation timed out. The state of the environment is unknown. The timeout can be set using the --timeout option.

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

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

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

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

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

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

guest

回答2

0

webpackerを1.2から2.0にアップデートして、webpacker.ymlを編集すれば出来ました。(2017-05-24にアップデートされました。)

wepacker git page

config/webpacker.yml

yaml

1default: &default 2 source_path: app/javascript 3 source_entry_path: packs 4 public_output_path: assets # ここをpacksからassetsに変更した 5省略

本質問を参照して関連記事書かせてもらいました。参考までに。
rails 5.1.1 をvueとreactをインストールしてAWS Elastic Beanstalkで表示するまで

投稿2017/05/26 00:20

junara

総合スコア12

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

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

0

自己解決

原因は不明ですが、自己解決しました。
ただ、応急処置なので正式対応を知っている方がおりましたら、引き続き回答お願いいただきたいです。

<原因>

eb logs ``` でログを見たところ、

rake assets:precompile

に失敗しています。node_module 以下にwebpackが無いみたいなエラーで怒られます。 ローカルでは成功するので、対応としてはデプロイ時にはコンパイルはしないでローカルでコンパイルしてデプロイすることで対応できました。 具体的にどうするかと言うと,デプロイ時に プロジェクトフォルダ直下に以下ファイルを作成し、コミットします。 .ebextensions/02_option_settings.config

option_settings:

  • namespace: aws:elasticbeanstalk:application:environment
    option_name: RAILS_SKIP_ASSET_COMPILATION
    value: "true"
設定で、デプロイ時にasset compileをスキップすると言うのを加えています。 これでデプロイ自体は成功します。 ただ、問題がありAWS公式サイトにあるようにアセットがpublic及び、/public/assetsフォルダ内にあるファイルのみアセットされます。 http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html

注記
Elastic Beanstalk は Rails アセットをデフォルトでプリコンパイルします。Ruby 2.1 コンテナタイプについては、次の点に注意してください。
nginx ウェブサーバーは、/public および /public/assets フォルダーからアセットを提供するように事前設定されています。

rails5.1で標準で搭載したwebpackerがcompileするフォルダが/public/packなのでデプロイ環境ではアセットされません。 暫定的な対応として /public/packにあるjsファイルを全て、/publicフォルダへコピーし、/public/manifest.jsonのパスを /public/pack/〇〇.js から/public/〇〇.js へ変更して、コミット・デプロイ(eb deploy)します。 これにより、jsファイルが全てassetされるので、Reactが正しく動作します。 ただ、デプロイのたびに上の作業をするのが手間です。 (1)デプロイ時のコンパイルに失敗しない方法 (2)ローカルのコンパイルの出力先を/public/packから/publicへ変更する (3)elastic beanstalk のnginxのassetが/public/pack以下のファイルも追加する 上記いずれの対策が必要です。 (1)は諦めるとして、(3)のやり方を知っている方追加でいらっしゃいますでしょうか。 よろしくお願いします。

投稿2017/04/10 04:09

nmatsumoto4

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問