git リポジトリのクローンを作成し、タスクを呼び出し、作成したファイルを GitHub リポジトリにアップロードする単純なherokuアプリを作成しようとしています。複製されたリポジトリのビルド タスクは、バイナリのビルドに gemを使用するRake Pipelineを使用します。bundle install
rake dist
execjs
問題を説明するサンプル アプリをhttps://github.com/pangratz/github-uploader-testに作成しました。アプリケーションのディレクトリ構造は次のとおりです。
/upload.rb
/project
Rakefile
Assetfile
Gemfile
Gemfile.lock
アプリ自体は、次のようなルートを持つ単純なシナトラアプリです。get '/'
アップロード.rb
get '/' do
Dir.chdir "project" do
Bundler.with_clean_env do
system "bundle install"
system "bundle exec rake dist"
end
end
end
デモンストレーションの目的で、project
フォルダーは複製された git リポジトリーをシミュレートします。Rakefile
、Assetfile
、Gemfile
およびが含まれていますGemfile.lock
。
プロジェクト/Rakefile
desc "Build"
task :dist do
Rake::Pipeline::Project.new("Assetfile").invoke
end
プロジェクト/アセットファイル
require "rake-pipeline-web-filters"
require "json"
require "uglifier"
require "execjs"
puts ExecJS.eval "'red yellow blue'.split(' ')"
プロジェクト/Gemfile
source "http://rubygems.org"
gem "rake-pipeline", :git => "https://github.com/livingsocial/rake-pipeline.git"
gem "rake-pipeline-web-filters", :git => "https://github.com/wycats/rake-pipeline-web-filters.git"
gem "colored"
gem "uglifier", :git => "https://github.com/lautis/uglifier.git"
group :development do
gem "rack"
gem "rest-client"
gem "github_api"
gem "ember-docs", :git => "https://github.com/emberjs/docs-generator.git"
gem "kicker"
end
の呼び出しはうまくいくbundle install
ようです。問題はrake dist
、エラーで失敗していることCould not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
です。
heroku アプリ自体は、オプションで作成されます--stack cedar
。
を使用するルート「/test」も作成しましたがExecjs
、これは失敗しません。Bundler.with_clean_env
そのため、インストールされている JavaScript ランタイムが見つからないという問題があるようです...
アップロード.rb
get '/test' do
puts ExecJS.eval "'red yellow blue'.split(' ')"
end