Články

Popularita frameworků: Ruby on Rails x Laravel

Aktualizováno: 23. 11. 2019, datum vydání: 31. 12. 2018

Popularita frameworků pro práci s webem se mění každým rokem. Zajímavé porovnání můžeme získat z nástroje Google Trends po zadání termínů (frameworků), které chceme porovnat. Analýza se zakládá na vyhledávaných slovech pomocí Google. Je vidět i region rozšíření daného frameworku, pokud odstraníme postupně zadané termíny. Podle tohoto nástroje zatím vede Ruby on Rails s aktuálním rozšířením hlavně v Číně. Oblíbenost Ruby on Rails v ČR příliš velká není.

Rails on Rails a Bootstrap

Aktualizováno: 24. 9. 2020, datum vydání: 26. 4. 2015

Chytré CSS s proměnnými a funkcemi

V tutoriálu Ruby on Rails od Michaela Hartla v páté kapitole je použit Bootstrap. Bootstrap je HTML, CSS a JavaScriptový framework postavený na preprocesorech CSS: Less a Sass. Preprocesory Less a Sass umožňují CSS obohatit o proměnné, funkce a následně takovýto kód předělají do klasického CSS.

Bootstrap framework používá nativně Less, které lze následně překonvertovat pomocí bootstrap-sass z Less na Sass. Bootstrap umožňuje vývojářům vytvořit jednoduše responzivní desing.

Tutoriály a manuály

„Welcome aboard“ pouze na lokálu

Aktualizováno: 24. 9. 2020, datum vydání: 21. 4. 2015

Po vytvoření nové aplikace v Ruby on Rails by měla být vidět defaultní stránka:

Welcome aboard

You’re riding Ruby on Rails!
About your application’s environment

Když však aplikaci nahrajeme na ostrý sever, např. na heroku, tak se místo této stránky objeví následující hláška:

The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.

Ruby on Rails tutorial – 8.6 Exercises

Aktualizováno: 23. 9. 2020, datum vydání: 4. 4. 2015

Uvádím zde řešení cvičení k tutoriálu Ruby on Rails od Michaela Hartla – kapitoly 8.6 úlohy 2.

Listing 8.61

Místo ? bude v kódu uveden @. Kód souboru app/controllers/sessions_controller.rb bude následující:

   def create
    @user = User.find_by(email: params[:session][:email].downcase)
    if @user && @user.authenticate(params[:session][:password])
      log_in @user
      params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
      redirect_to @user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

Ruby on Rails tutorial – Listing 8.52

Aktualizováno: 23. 9. 2020, datum vydání: 2. 4. 2015

Opět mi neprošel test v tutoriálu Ruby on Rails od Michaela Hartla – v kapitole 8.5 Listing 8.52.

NoMethodError: undefined method `full_title'

Po spuštění testu podle Listing 8.52 test nebyl zelený Green, ale červený Red. Objevila se mi následující hláška:

jitka@rails-tutorial:~/workspace/sample_app (log-in-log-out) $ bundle exec rake test
Started

ERROR["test_layout_links", SiteLayoutTest, 0.599118864]
 test_layout_links#SiteLayoutTest (0.60s)
NoMethodError:         NoMethodError: undefined method `full_title' for #<SiteLayoutTest:0x00000008205f28>
            test/integration/site_layout_test.rb:12:in `block in <class:SiteLayoutTest>'
        test/integration/site_layout_test.rb:12:in `block in <class:SiteLayoutTest>'

  25/25: [=====================================================================] 100% Time: 00:00:00, Time: 00:00:00

Finished in 0.69037s
25 tests, 59 assertions, 0 failures, 1 errors, 0 skips

Ruby on Rails tutorial – Listing 8.23

Aktualizováno: 23. 9. 2020, datum vydání: 22. 3. 2015

Narazila jsem asi na drobnou chybu v tutoriálu Ruby on Rails od Michaela Hartla – v kapitole 8.5 Listing 8.23

NoMethodError: undefined method `full_title'

Po spuštění testu podle Listing 8.25 test nebyl zelený Green, ale červený Red. Objevila se mi následující hláška:

jitka@rails-tutorial:~/workspace/sample_app (log-in-log-out) $ bundle exec rake test
Started

ERROR["test_layout_links", SiteLayoutTest, 0.519295788]
 test_layout_links#SiteLayoutTest (0.52s)
NoMethodError:         NoMethodError: undefined method `full_title' for #<SiteLayoutTest:0x000000062eab48>
            test/integration/site_layout_test.rb:12:in `block in <class:SiteLayoutTest>'
        test/integration/site_layout_test.rb:12:in `block in <class:SiteLayoutTest>'

  22/22: [=====================================================================] 100% Time: 00:00:00, Time: 00:00:00

Finished in 0.77941s
22 tests, 51 assertions, 0 failures, 1 errors, 0 skips

Ruby on Rails tutorial – 7.7 Exercises

Aktualizováno: 23. 9. 2020, datum vydání: 14. 3. 2015

Uvádím zde řešení cvičení k tutoriálu Ruby on Rails od Michaela Hartla – kapitola 7.7

Úloha 2 (Listing 7.32).

  test "invalid signup information" do
    get signup_path
    assert_no_difference 'User.count' do
      post users_path, user: { name:  "",
                               email: "user@invalid",
                               password:              "foo",
                               password_confirmation: "bar" }
    end
    assert_template 'users/new'
    assert_select 'div#error_explanation'
    assert_select 'div.alert'
    assert_select 'div.alert-danger'
  end

Kód příslušné třídy je obsažen v souboru views/shared/_error_messages.html.erb. Funkčnost testu otestujeme pomocí příkazu bundle exec rake test.

Ruby on Rails tutorial – 7.4.1 The finished signup form

Aktualizováno: 23. 9. 2020, datum vydání: 13. 3. 2015

Zde je má poznámka k tutoriálu Ruby on Rails od Michaela Hartla – 7.4.1 The finished signup form. Při nezávislém zobrazení stránky users (např. při refresh) https://rails-tutorial-jitka-1.c9.io/users se může objevit tato chybová hláška:

Unknown action
The action 'index' could not be found for UsersController

Aby stránka fungovala tak, jak zatím potřebujeme, tak se stačí vrátit na stránku Sign up https://rails-tutorial-jitka-1.c9.io/signup a dát Create my account. Po kliknutí na tlačítko se dostaneme na stránku https://rails-tutorial-jitka-1.c9.io/users, která již bude normálně funkční a vypíše případné hlášky o chybách.

Ruby on Rails tutorial – 7.3.4 A test for invalid submission

Aktualizováno: 23. 9. 2020, datum vydání: 13. 3. 2015

Uvádím zde zádrhel v tutoriálu Ruby on Rails od Michaela Hartla – 7.3.4 A test for invalid submission. Po zadání příkazu get signup_path se objeví chybová hláška.

jitka@rails-tutorial:~/workspace/sample_app (sign-up) $ rails console
Loading development environment (Rails 4.2.0)
>> User.count
   (0.1ms)  SELECT COUNT(*) FROM "users"
=> 0
>> get signup_path
NameError: undefined local variable or method `signup_path' for main:Object
        from (irb):2
...

Vlastně nejde o chybu, protože tento příkaz se měl vykonat nikoli v konzoli irb, ale v souboru test/integration/users_signup_test.rb viz Listing 7.21, ale člověka to zmate, když čte tutoriál.

Ruby on Rails tutorial – Listing 7.8

Aktualizováno: 23. 9. 2020, datum vydání: 6. 3. 2015

Uvádím zde opravu příkladu v tutoriálu Ruby on Rails od Michaela Hartla – 7.1.4 A Gravatar image and a sidebar, Listing 7.8.

V tutoriálu je drobná chybička, která na první pohled budí dojem, že chybí příslušná knihovna:

jitka@rails-tutorial:~/workspace/sample_app (sign-up) $ rails console
Loading development environment (Rails 4.2.0)
>> email = "MHARTL@example.COM".
?> Digest::MD5::hexdigest(email.downcase)
NoMethodError: private method `Digest' called for "MHARTL@example.COM":String
        from (irb):2
...

Ruby on Rails tutorial – 6.5 Exercises

Aktualizováno: 23. 9. 2020, datum vydání: 4. 3. 2015

Uvádím zde řešení cvičení k tutoriálu Ruby on Rails od Michaela Hartla – kapitola 6.5.

Úloha 3 je vyřešena v rámci (Listing 6.43)

Chybná emailová adresa foo@bar..com se doplní do souboru test/models/user_test.rb mezi testované adresy:

  test "email validation should reject invalid addresses" do
    invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
                           foo@bar_baz.com foo@bar+baz.com foo@bar..com]
    invalid_addresses.each do |invalid_address|
      @user.email = invalid_address
      assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
    end
  end

Ruby on Rails tutorial – 5.6 Exercises

Aktualizováno: 23. 9. 2020, datum vydání: 1. 3. 2015

Uvádím zde řešení cvičení k tutoriálu Ruby on Rails od Michaela Hartla – kapitola 5.6.

Úloha 1 a 2

Tyto úlohy jsou vyřešeny v rámci Listing 5.36 a Listing 5.37, i když jdou vyřešit i jiným způsobem.

Úloha 3 (Listing 5.38)

Vytvořila jsem si prázdný soubor test/helpers/application_helper_test.rb a do něj nejprve dala chybný kód. Test bundle exec rake test samozřejmě neprošel. Následně jsem do souboru doplnila správný kód:

require 'test_helper'

class ApplicationHelperTest > ActionView::TestCase
  test "full title helper" do
    assert_equal full_title,         "Ruby on Rails Tutorial Sample App"
    assert_equal full_title("Help"), "Help | Ruby on Rails Tutorial Sample App"
  end
end

Ruby on Rails tutorial – 5.1.1 Site navigation

Aktualizováno: 23. 9. 2020, datum vydání: 18. 2. 2015

mv: cannot stat ‘rails.png’: No such file or directory

Při zkoušení skvělého tutoriálu k Ruby on Rails od Michaela Hartla v kapitole 5.1.1 Site navigation (Listing 5.2) mi nešel dle návodu nahrát na server Cloud9 obrázek rails.png. Příčinu neznám, jen to vyhodilo tuto hlášku:

jitka@rails-tutorial:~/workspace/sample_app (filling-in-layout) $ curl -O http://rubyonrails.org/images/rails.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
jitka@rails-tutorial:~/workspace/sample_app (filling-in-layout) $ mv rails.png app/assets/images/
mv: cannot stat ‘rails.png’: No such file or directory

Ruby on Rails tutorial – 2.5 Exercises

Aktualizováno: 22. 9. 2020, datum vydání: 19. 1. 2015

Chybová hláška FILL_IN

Při zkoušení cvičení v Ruby on Rails skvělého tutoriálu od Michaela Hartla v kapitole 2.5 u Listing 2.19 můžete narazit na chybovou hlášku, kterou vygeneruje prohlížeč:

NameError in UsersController#index
uninitialized constant User::FILL_IN

Extracted source (around line #3):
1
2
3
4
5
                
class User < ActiveRecord::Base
  has_many :microposts
  validates FILL_IN, presence: true
  validates FILL_IN, presence: true
end

Rails.root: /home/ubuntu/workspace/toy_app
...

Cloud9 a tutoriál k Ruby on Rails

Aktualizováno: 22. 9. 2020, datum vydání: 18. 1. 2015

Tutoriál od Michaela Hartla k Ruby on Rails využívá pro vývoj projektů vývojové prostředí Cloud9. Během zkoušení jsem narazila na některé chybové hlášky, které lze jednoduše vyřešit následujícím způsobem.

No application seems to be running here!

Po určité době nečinnosti či po přihlášení po pár dnech, se může objevit tato chybová hláška:

Ruby on Rails tutorial od Michaela Hartla

Aktualizováno: 22. 9. 2020, datum vydání: 28. 12. 2014

Skvělý tutoriál Ruby on Rails od Michaela Hartla provede programátora krok za krokem vývojem v tomto prostředí. Pro vývoj a nasazení jsou použity následující služby dostupné na internetu.

Cloud9 – vývojové prostředí cloud IDE

Nemusíte mít nainstalováno Ruby on Rails na svém PC. Stačí připojení k internetu a můžete si zkoušet Ruby on Rails. Pro vývojové prostředí je podle manuálu použita služba Cloud9. Tam běží server, do kterého si nainstalujete určitou verzi Ruby. Tam si vytváříte projekty, upravujete kód přes internetové rozhraní, máte přes internet k dispozici terminálové okno serveru a zároveň si spouštíte výsledek v URL okně prohlížeče (jako na lokále). Komunikace probíhá přes https, tedy šifrovaně. Zároveň budete mít na tomto serveru automaticky zprovozněn verzovací systém Git, který je součástí Ruby on Rails. Takže veškerý vývoj aplikace se připraví a bude uložen na Cloud9.

Ruby on Rails

Aktualizováno: 11. 12. 2020, datum vydání: 9. 12. 2014

Ruby on Rails je framework, ve kterém můžete programovat např. webové aplikace.

Návody a dokumentace k Ruby on Rails

Další články