簡體   English   中英

如何將這個Ruby / Sinatra應用程序部署到Heroku?

[英]How can I deploy this Ruby/Sinatra app to Heroku?

我正在嘗試進行我的第一個 Ruby / Sinatra部署(是!),這是Heroku的“待辦事項”應用程序網站。 該代碼在Windows和Ubuntu環境中運行良好

我謙虛的應用

但實際上無法成功部署。

我嘗試使用自己的代碼遵循本教程 當我執行sudo git push heroku master ,被告知該應用程序已部署到Heroku,但是當我轉到它提供的URL時,它沒有運行。 的單行Procfile可能需要幫助。 另外,“警告”(是否表示未發生部署?)表示我沒有聲明我的Ruby版本。 我嘗試使用rvm 2.2.5並將rvm 2.2.5 gem 'ruby', '2.2.5'放入我的Gemfile中 ,但如果我聲明Ruby版本,則捆綁程序將不會安裝(它說我沒有安裝該版本的Ruby,我當然似乎)。

sudo git push heroku master
Counting objects: 5, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 419 bytes | 0 bytes/s, done.
Total 5 (delta 3), reused 1 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rack
remote: -----> Using Ruby version: ruby-2.2.6
remote: -----> Installing dependencies using bundler 1.13.6
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Warning: the running version of Bundler (1.13.6) is older than the version that created the lockfile (1.13.7). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        Fetching gem metadata from https://rubygems.org/.........
remote:        Fetching version metadata from https://rubygems.org/.
remote:        Using diff-lcs 1.2.5
remote:        Using rack 1.6.5
remote:        Using rspec-support 3.5.0
remote:        Using ruby 0.1.0
remote:        Using tilt 2.0.5
remote:        Using bundler 1.13.6
remote:        Using rspec-core 3.5.4
remote:        Using rspec-expectations 3.5.0
remote:        Using rspec-mocks 3.5.0
remote:        Using rack-protection 1.5.3
remote:        Using sinatra 1.4.7
remote:        Bundle complete! 7 Gemfile dependencies, 11 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into ./vendor/bundle.
remote:        Bundle completed (1.79s)
remote:        Cleaning up the bundler cache.
remote:        Warning: the running version of Bundler (1.13.6) is older than the version that created the lockfile (1.13.7). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        Removing dbm (0.5)
remote: -----> Detecting rake tasks
remote: 
remote: ###### WARNING:
remote:        You have not declared a Ruby version in your Gemfile.
remote:        To set your Ruby version add this line to your Gemfile:
remote:        ruby '2.2.6'
remote:        # See https://devcenter.heroku.com/articles/ruby-versions for more information.
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types     -> web
remote:        Default types for buildpack -> console, rake
remote: 
remote: -----> Compressing...
remote:        Done: 17.3M
remote: -----> Launching...
remote:        Released v5
remote:        https://gentle-sea-73583.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/gentle-sea-73583.git
   995b763..014acd8  master -> master

我還嘗試執行sudo heroku run ruby todo.rbtodo.rb是我的服務器應用程序),我得到了:

sudo heroku run ruby todo.rb
Running ruby todo.rb on ⬢ gentle-sea-73583... up, run.3103 (Free)
/app/vendor/ruby-2.2.6/lib/ruby/2.2.0/yaml/dbm.rb:2:in `require': cannot load such file -- dbm (LoadError)
    from /app/vendor/ruby-2.2.6/lib/ruby/2.2.0/yaml/dbm.rb:2:in `<top (required)>'
    from /app/lib/task_store.rb:2:in `require'
    from /app/lib/task_store.rb:2:in `<top (required)>'
    from todo.rb:7:in `require'
    from todo.rb:7:in `<main>'

也許我需要以某種方式在Heroku上設置YAML? 我不知道如何...

從您的Gemfile中刪除gem'dbm gem 'dbm'

該dbm gem僅適用於jruby,並且您不需要它,因為您使用的是yaml / dbm。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM