Początki z ksiązka Michael'a Hartl'a

Cześć Wszystkim!

Nazywam się Janek, i od niedawna zacząłem przygodę z językiem Ruby, Przerabiam książke Agile web development (3 edycję) Korzystam z środowiska Cloud9 i podczas instalacji railsów 4.2.2 pojawia mi się taki błąd:

yankosky@rails-tutorial:~/workspace $ rails 4.2.2 new helloapp

/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/siteruby/2.2.0/rubygems/dependency.rb:315:in to_specs’: Could not find ‘railties’ (= 4.2.2) - did find: [railties-4.2.1,railties-4.2.0.beta2] (Gem::LoadError)

Checked in ‘GEM_PATH=/usr/local/rvm/gems/ruby-2.2.1:/usr/local/rvm/gems/ruby-2.2.1@global’, execute gem env for more information

    *from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/dependency.rb:324:in tospec'*

    *from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/siteruby/2.2.0/rubygems/coreext/kernelgem.rb:64:in gem'*

    *from /usr/local/rvm/gems/ruby-2.2.1/bin/rails:22:in <main>'*

    *from /usr/local/rvm/gems/ruby-2.2.1/bin/rubyexecutablehooks:15:in eval'*

    *from /usr/local/rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in <main>'*

Czy może macie jakiś pomysł, jak sobie z tym poradzić?

Pozdrawiam,
Janek

Z jakiegoś dziwnego powodu nie masz gema railties w odpowiedniej wersji. Doinstaluj go ręcznie gem install railties -v 4.2.2.

1 Like

Dziękuje bardzo!:slight_smile:

Hej raz jeszcze!

Nie chciałbym zakładać osobnego tematu, mianowicie chciałbym jeszcze Was poprosić pomoc, mianowicie w IDE polecanym w powyższej książce “Cloud9” usunąłem mój Workspace, ponieważ chciałem go założyć raz jeszcze. NIestety po ponownej próbie założenia wyświetla mi się następujący komunikat:

Can’t create workspace. You have reached the limit for creating hosted workspaces, perhaps because you ran out of RAM or disk resources. Please visit your account page to purchase more resources.

Próbowałem zakładać inne konta, ale nie działa. Czy ma ktoś jakiś pomysł jak sobie z tym poradzić?

Pozdrawiam!

Cześć raz jeszcze!

Tym razem kończę już 2 rozdizał wspomnianej wyżej książki, jednak podczas samej końcówki, kiedy to mam za zadanie skorzystać z komendy:

git push heroku master.

pojawia mi się następujący błąd:

remote:        Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
remote:        
remote:        /tmp/build_b7acf3097b631da0d1646fbe62822a92/vendor/ruby-2.0.0/bin/ruby extconf.rb
remote:        checking for sqlite3.h... no
remote:        sqlite3.h is missing. Try 'port install sqlite3 +universal',
remote:        'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
remote:        and check your shared library search path (the
remote:        location where your sqlite3 shared library is located).
remote:        *** extconf.rb failed ***
remote:        Could not create Makefile due to some reason, probably lack of necessary
remote:        libraries and/or headers.  Check the mkmf.log file for more details.  You may
remote:        need configuration options.
remote:        
remote:        Provided configuration options:
remote:        --with-opt-dir
remote:        --without-opt-dir
remote:        --with-opt-include
remote:        --without-opt-include=${opt-dir}/include
remote:        --with-opt-lib
remote:        --without-opt-lib=${opt-dir}/lib
remote:        --with-make-prog
remote:        --without-make-prog
remote:        --srcdir=.
remote:        --curdir
remote:        --ruby=/tmp/build_b7acf3097b631da0d1646fbe62822a92/vendor/ruby-2.0.0/bin/ruby
remote:        --with-sqlite3-dir
remote:        --without-sqlite3-dir
remote:        --with-sqlite3-include
remote:        --without-sqlite3-include=${sqlite3-dir}/include
remote:        --with-sqlite3-lib
remote:        --without-sqlite3-lib=${sqlite3-dir}/
remote:        
remote:        
remote:        Gem files will remain installed in /tmp/build_b7acf3097b631da0d1646fbe62822a92/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.10 for inspection.
remote:        Results logged to /tmp/build_b7acf3097b631da0d1646fbe62822a92/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.10/ext/sqlite3/gem_make.out
remote:        An error occurred while installing sqlite3 (1.3.10), and Bundler cannot
remote:        continue.
remote:        Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !     
remote:  !     Detected sqlite3 gem which is not supported on Heroku.
remote:  !     https://devcenter.heroku.com/articles/sqlite3
remote:  !
remote: 
remote:  !     Push rejected, failed to compile Ruby app
remote: 
remote: Verifying deploy...
remote: 
remote: !       Push rejected to fierce-inlet-1886.
remote: 
To https://git.heroku.com/fierce-inlet-1886.git
 ! [remote rejected] master -> master (pre-receive hook declined)

a więc skorzystałem z komendy:

gem install sqlite3 -v '1.3.10'

Jednak po zainstalowaniu tego gema nadal pojawia się taki sam błąd.

Czy ktoś mógłby mi pomóc?

Pozdrawiam,
Janek

Chodzi o to, że Heroku nie obsługuje sqlite. Musisz użyć PostgreSQL

1 Like

Czy aby czasem nie zainstalowałeś po prostu sqlite3 lokalnie a próbujesz zrobić deploy na heroku? Czytałeś komunikat błędu?

remote: ! Detected sqlite3 gem which is not supported on Heroku.
remote: ! https://devcenter.heroku.com/articles/sqlite3
remote: !
remote:
remote: ! Push rejected, failed to compile Ruby app

Na heroku możesz użyć np. postgresa, jak koniecznie chcesz mieć sqlite lokalnie to dodaj go do grfup development/test a postgresa do pozostalych środowisk.

Tak jak chłopaki napisali wcześniej, Heroku nie używa SQLite jako silnika bazodanowego.
W trybie developerskim możesz spokojnie SQLite używać, natomiast w produkcyjnym już nie.

Dodaj w Gemfile:

group :production do
  gem 'pg'
end

Nie zapomnij w pliku database.yml zmienić ustawienia:

production:
  adapter: postgresql
  encoding: unicode
  pool: 5
  database: database_name
  username: username
  password: password

Dziękuje za porady, zmieniłem to co mi pokazałeś. Niestety nadal błąd wywala podczas komendy
$ git push heroku master

może jeszcze coś zmienić?

Pozdrawiam,
Janek

Logi byłby pomocne, nie ukrywam :slight_smile:

Przepraszam:D

Oto, co mi się pojawia po $git push heroku master:

  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
remote:        
remote:        /tmp/build_07f299c3872a45012fd16f40e59ad14a/vendor/ruby-2.0.0/bin/ruby extconf.rb
remote:        checking for sqlite3.h... no
remote:        sqlite3.h is missing. Try 'port install sqlite3 +universal',
remote:        'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
remote:        and check your shared library search path (the
remote:        location where your sqlite3 shared library is located).
remote:        *** extconf.rb failed ***
remote:        Could not create Makefile due to some reason, probably lack of necessary
remote:        libraries and/or headers.  Check the mkmf.log file for more details.  You may
remote:        need configuration options.
remote:        
remote:        Provided configuration options:
remote:        --with-opt-dir
remote:        --without-opt-dir
remote:        --with-opt-include
remote:        --without-opt-include=${opt-dir}/include
remote:        --with-opt-lib
remote:        --without-opt-lib=${opt-dir}/lib
remote:        --with-make-prog
remote:        --without-make-prog
remote:        --srcdir=.
remote:        --curdir
remote:        --ruby=/tmp/build_07f299c3872a45012fd16f40e59ad14a/vendor/ruby-2.0.0/bin/ruby
remote:        --with-sqlite3-dir
remote:        --without-sqlite3-dir
remote:        --with-sqlite3-include
remote:        --without-sqlite3-include=${sqlite3-dir}/include
remote:        --with-sqlite3-lib
remote:        --without-sqlite3-lib=${sqlite3-dir}/
remote:        
remote:        
remote:        Gem files will remain installed in /tmp/build_07f299c3872a45012fd16f40e59ad14a/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.10 for inspection.
remote:        Results logged to /tmp/build_07f299c3872a45012fd16f40e59ad14a/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.10/ext/sqlite3/gem_make.out
remote:        An error occurred while installing sqlite3 (1.3.10), and Bundler cannot
remote:        continue.
remote:        Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !     
remote:  !     Detected sqlite3 gem which is not supported on Heroku.
remote:  !     https://devcenter.heroku.com/articles/sqlite3
remote:  !
remote: 
remote:  !     Push rejected, failed to compile Ruby app
remote: 
remote: Verifying deploy....
remote: 
remote: !       Push rejected to fierce-inlet-1886.
remote: 
To https://git.heroku.com/fierce-inlet-1886.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/fierce-inlet-1886.git'

Zmień linię w gemfile z sqlite3 na:

gem 'sqlite3', group: :development

Dziękuje za poradę, niestety po wprowadzeniu zmian nadal mi wywala taki sam błąd. Może ktoś przerabiał też tą książkę i miał coś podobnego?

Pozdrawiam,
Janek

Wiem ze to głupie, ale początkującym się zdarza. Otóż, czy commitnąłeś zmiany?

spróbuj użyć bundle run rake db:migrate a dopiero później git push heroku master

Dziękuje:)
Od jakiegoś czasu działam na Ubuntu 15.04, jest mniej problemów:)

Pozdrawiam,

Hej!

a jednak problem się pojawił, mianowicie podczas przerabiania wyżej wspomnianej książki utknąłem przy prawidłowym działaniu odnośników w stopce.

przerabiam dokładnie podpunkt 5.3.3

podczas klikania w “About” pojawia mi się następujący błąd:

We’re sorry, but something went wrong.
If you are the application owner check the logs for more information.

w moim pliku _footer.html.erb znajduje się:

<footer class="footer">
  <small>
    The <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a>
    by <a href="http://www.michaelhartl.com/">Michael Hartl</a>
  </small>
  <nav>
    <ul>
      <li><%= link_to "About", about_path %></li>
      <li><%= link_to "Contact", contact_path %></li>
      <li><a href="http://news.railstutorial.org/">News</a></li>
    </ul>
  </nav>
</footer>

a w pliku about.html.erb:

<% provide(:title, “About”) %>

<h1>About</h1>
<p>
    The <a href="http://www.railstutorial.org/"><em> Ruby on Rails Tutorial</em></a> is a
    <a href="http://www.railstutorial.org/book">book</a> and 
    <a href="http;//screencasts.railstutorial.org/">screencast series</a> to tech web development with
    <a href="http://rubyonrails.org/">Ruby on Rails</a>.
    This is the sample application for the tutorial.
</p>

Czy ktoś miał już z Wass taki problem? macie może jakąś radę?

Pozdrawiam,
Janek

Już naprawiłem,

w routes mialem błąd:)

Rails.application.routes.draw do
  root               'static_pages#home'
  get 'help'    =>   'static_pages/help'
  get 'about'   =>   'static_pages/about'
  get 'contact' =>   'static_pages/contact'

zamieniłem na

Rails.application.routes.draw do
  root               'static_pages#home'
  get 'help'    =>   'static_pages#help'
  get 'about'   =>   'static_pages#about'
  get 'contact' =>   'static_pages#contact'

:smiley: