2014-10-24 15 views
6

Tôi đang cố triển khai ứng dụng cho Heroku sử dụng trình quản trị web Watir. Nó chạy cục bộ thành công. Theo câu trả lời cho câu hỏi này: Can you deploy Watir on Heroku to generate HTML Snapshots? If so, how?, bạn có thể làm điều đó. Tôi đã làm theo các bước từ câu trả lời này https://stackoverflow.com/a/21267376/3192470. app.rb của tôi trông như thế này:Ứng dụng Watir được triển khai cho heroku

require "sinatra" 
require "rubygems" 
require "shotgun" 
require "rake" 
require "watir" 

get '/sending_out' do 
    browser = Watir::Browser.new :phantomjs 
    erb :index 
end 

Nhưng nó bị treo khi triển khai tới Heroku với những bản ghi:

2014-10-24T13:01:10.620468+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch' 
2014-10-24T13:01:10.620465+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:35:in `block in launch' 
2014-10-24T13:01:10.620480+00:00 app[web.1]: credits.rb:44:in `rencredit' 
2014-10-24T13:01:10.620496+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1004:in `process_route' 
2014-10-24T13:01:10.620510+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `block in invoke' 
2014-10-24T13:01:10.620534+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:217:in `call' 
2014-10-24T13:01:10.620590+00:00 app[web.1]: /app/vendor/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service' 
2014-10-24T13:01:10.620460+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:60:in `execute' 
2014-10-24T13:01:10.620475+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/watir-webdriver-0.6.11/lib/watir-webdriver/browser.rb:46:in `initialize' 
2014-10-24T13:01:10.620491+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `block (2 levels) in route!' 
2014-10-24T13:01:10.620506+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `invoke' 
2014-10-24T13:01:10.620524+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call' 
2014-10-24T13:01:10.620587+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `call' 
2014-10-24T13:01:10.620469+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/bridge.rb:24:in `initialize' 
2014-10-24T13:01:10.620484+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `block in compile!' 
2014-10-24T13:01:10.620500+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:963:in `route!' 
2014-10-24T13:01:10.620525+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call' 
2014-10-24T13:01:10.620526+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' 
2014-10-24T13:01:10.620528+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' 
2014-10-24T13:01:10.620529+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call' 
2014-10-24T13:01:10.620574+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:2014:in `call' 
2014-10-24T13:01:10.621081+00:00 app[web.1]: ip-10-226-67-253.ec2.internal - - [24/Oct/2014:13:01:10 UTC] "POST /sending_out HTTP/1.1" 500 30 
2014-10-24T13:01:10.620462+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:34:in `start_with' 
2014-10-24T13:01:10.620477+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/watir-5.0.0/lib/watir/loader.rb:9:in `initialize' 
2014-10-24T13:01:10.620492+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1006:in `block in process_route' 
2014-10-24T13:01:10.620507+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1073:in `dispatch!' 
2014-10-24T13:01:10.620531+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/logger.rb:15:in `call' 
2014-10-24T13:01:10.620588+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service' 
2014-10-24T13:01:10.620459+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:127:in `path' 
2014-10-24T13:01:10.620474+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver.rb:67:in `for' 
2014-10-24T13:01:10.620490+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:985:in `route_eval' 
2014-10-24T13:01:10.620505+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `catch' 
2014-10-24T13:01:10.620517+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call' 
2014-10-24T13:01:10.620584+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `block in call' 
2014-10-24T13:01:10.620464+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:70:in `start_silent_and_wait' 
2014-10-24T13:01:10.620479+00:00 app[web.1]: credits.rb:44:in `new' 
2014-10-24T13:01:10.620494+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1004:in `catch' 
2014-10-24T13:01:10.620509+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:898:in `block in call!' 
2014-10-24T13:01:10.620532+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in `call' 
2014-10-24T13:01:10.620586+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1788:in `synchronize' 
2014-10-24T13:01:10.620483+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `call' 
2014-10-24T13:01:10.620499+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:963:in `each' 
2014-10-24T13:01:10.620513+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `invoke' 
2014-10-24T13:01:10.620573+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:180:in `call' 
2014-10-24T13:01:10.620761+00:00 app[web.1]: 83.245.232.99 - - [24/Oct/2014 13:01:10] "POST /sending_out HTTP/1.1" 500 30 0.3206 
2014-10-24T13:01:10.620466+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked' 
2014-10-24T13:01:10.620481+00:00 app[web.1]: credits.rb:36:in `block in <main>' 
2014-10-24T13:01:10.620497+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:964:in `block in route!' 
2014-10-24T13:01:10.620511+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `catch' 
2014-10-24T13:01:10.620535+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:210:in `call' 
2014-10-24T13:01:10.620592+00:00 app[web.1]: /app/vendor/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run' 
2014-10-24T13:01:10.620471+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `new' 
2014-10-24T13:01:10.620486+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `[]' 
2014-10-24T13:01:10.620502+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1076:in `block in dispatch!' 
2014-10-24T13:01:10.620514+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:898:in `call!' 
2014-10-24T13:01:10.620537+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/head.rb:11:in `call' 
2014-10-24T13:01:10.620593+00:00 app[web.1]: /app/vendor/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread' 
2014-10-24T13:01:10.620453+00:00 app[web.1]: Selenium::WebDriver::Error::WebDriverError - Could not find Firefox binary (os=linux). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path=: 
2014-10-24T13:01:10.620472+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `for' 
2014-10-24T13:01:10.620487+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `block (3 levels) in route!' 
2014-10-24T13:01:10.620503+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `block in invoke' 
2014-10-24T13:01:10.620515+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:886:in `call' 
2014-10-24T13:01:10.620555+00:00 app[web.1]: /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call' 
2014-10-24T13:01:10.621098+00:00 app[web.1]: http://sleepy-dawn-1804.herokuapp.com/ -> /sending_out 
2014-10-24T13:01:10.625080+00:00 heroku[router]: at=info method=POST path="/sending_out" host=sleepy-dawn-1804.herokuapp.com request_id=ab9957cb-f2af-416c-9055-8fe4d4ccae69 fwd="83.245.232.99" dyno=web.1 connect=1ms service=327ms status=500 bytes=326 
2014-10-24T13:19:46+00:00 heroku[slug-compiler]: Slug compilation started 
2014-10-24T13:19:56+00:00 heroku[slug-compiler]: Slug compilation finished 
2014-10-24T13:19:56.715255+00:00 heroku[api]: Deploy a3750e4 by ___ 
2014-10-24T13:19:56.715329+00:00 heroku[api]: Release v13 created by ___ 
2014-10-24T13:19:56.987774+00:00 heroku[web.1]: State changed from up to starting 
2014-10-24T13:19:59.188226+00:00 app[web.1]: == Sinatra has ended his set (crowd applauds) 
2014-10-24T13:19:59.372012+00:00 heroku[web.1]: Starting process with command `bundle exec ruby credits.rb -p 38378` 
2014-10-24T13:19:59.936031+00:00 app[web.1]: bash: bundle: command not found 
2014-10-24T13:19:58.792208+00:00 heroku[web.1]: Stopping all processes with SIGTERM 
2014-10-24T13:20:00.744914+00:00 heroku[web.1]: State changed from crashed to starting 
2014-10-24T13:20:00.744331+00:00 heroku[web.1]: State changed from starting to crashed 
2014-10-24T13:20:00.731432+00:00 heroku[web.1]: Process exited with status 127 
2014-10-24T13:20:00.979441+00:00 app[web.1]: [2014-10-24 13:20:00] INFO WEBrick::HTTPServer#start done. 
2014-10-24T13:20:00.979326+00:00 app[web.1]: [2014-10-24 13:20:00] INFO going to shutdown ... 
2014-10-24T13:20:01.793815+00:00 heroku[web.1]: Process exited with status 0 
2014-10-24T13:20:02.890977+00:00 heroku[web.1]: Starting process with command `bundle exec ruby credits.rb -p 8176` 
2014-10-24T13:20:03.432512+00:00 app[web.1]: bash: bundle: command not found 
2014-10-24T13:20:04.173800+00:00 heroku[web.1]: State changed from starting to crashed 
2014-10-24T13:20:04.164173+00:00 heroku[web.1]: Process exited with status 127 
2014-10-24T13:20:04.812284+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=sleepy-dawn-1804.herokuapp.com request_id=f0b2bb74-8eaa-4a4c-801f-97ab9d442f04 fwd="54.166.216.157" dyno= connect= service= status=503 bytes= 
2014-10-24T13:20:06.224767+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/sending_out" host=sleepy-dawn-1804.herokuapp.com request_id=eb306448-91ee-40ea-89ec-7756e277e986 fwd="83.245.232.99" dyno= connect= service= status=503 bytes= 

Và cũng có khi tôi đẩy nó vào Heroku nó nghĩ rằng nó là một ứng dụng phantomjs:

PhantomJS app detected 

Điều gì có thể thực hiện được? Đây có phải là tất cả có thể để chạy Watir từ Heroku?

EDIT: câu trả lời từ hỗ trợ Heroku:

watir đòi hỏi selen, đòi hỏi một máy chủ X cài đặt trên máy tính này. Bởi vì các dynos của chúng tôi không có nghĩa là để khởi chạy các ứng dụng đồ họa, chúng không có bất kỳ máy chủ X nào được cài đặt và do đó không thể cài đặt Selenium. Vì vậy, tôi e rằng nó sẽ không thể sử dụng Watir trong ứng dụng của bạn.

+0

Bạn có biết nếu nó có thể được làm việc nếu bạn chạy watir không đầu trình duyệt? –

+0

@DavidGeismar, bạn có nghĩa là với đá quý không đầu? Tôi đã chạy thành công watir với đá quý không đầu trên vps không đầu, nhưng không phải là heroku. Tôi nghĩ rằng yeah, bạn có thể làm điều đó trên heroku quá với một số buildpack khác. – lakesare

+0

Tôi không sử dụng đá quý không đầu cuối cùng nhưng watir với trình điều khiển ma phantomJS, nhưng tôi vẫn không thể triển khai trên heroku ... Nếu bạn có một số ý tưởng để giúp tôi http: // stackoverflow.com/questions/33156381/cant-deploy-rails-app-on-heroku-sau-cài đặt-buildpacks –

Trả lời

5

Có, có thể! Chỉ cần làm theo các bước từ bài viết này: https://github.com/edelpero/watir-examples/blob/master/watir_on_heroku.md.

Ngay:

$ heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git 
$ touch .buildpacks 

Sau đó thêm vào thư mục vừa tạo .buildpacks những dòng này:

https://github.com/heroku/heroku-buildpack-ruby 
https://github.com/stomita/heroku-buildpack-phantomjs 

Sau đó, trong thiết bị đầu cuối:

$ heroku config:set PATH="/usr/local/bin:/usr/bin:/bin:/app/vendor/phantomjs/bin" 
$ heroku config:set LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib 

Sau đó đẩy những thay đổi này Heroku và

Watir::Browser.new :phantomjs 

với mã Watir thông thường sau đây sẽ hoạt động!

+0

Bài viết hay. Heroku cho phép nhiều gói xây dựng từ hộp với 'heroku buildpacks: thêm --index 1 heroku/ruby'. Nhưng không có webdrivers nào làm việc cho tôi, chúng sinh ra một cái gì đó giống như 'ChildProcess :: LaunchError - Không tồn tại các tập tin không tồn tại trong file hoặc thư mục' và có + x trên chúng. – lifecoder

1

heroku-buildpack-multi bị phản đối, ngày nay bạn có thể thêm nhiều buildpacks để Heroku và sử dụng buildpack phantomjs như thế này:

$ heroku buildpacks:add https://github.com/stomita/heroku-buildpack-phantomjs 

nên làm việc!

Các vấn đề liên quan