Komentáře k článku

Sinatra.rb aneb nejsnazší cesta k Ruby

Mohlo by se zdát, že v programovacím jazyce Ruby existuje jediný webový framework: obdivované i proklínané Ruby on Rails. Možností je však více, a na jednu z nich se nyní podíváme blíže: ukážeme si, jak na pár řádcích napsat webovou aplikaci, pracující s JSON daty, v mikro-frameworku Sinatra.

Zpět na článek

28 komentářů k článku Sinatra.rb aneb nejsnazší cesta k Ruby:

  1. mirozbiro

    co je ruby?
    Halo, jen tak pro zajimavost, mohl by nekdo rict, co je ruby? Kdyz nekdo zna perl, php a videl python, porozumi k cemu je vytvoren ruby? Dik za strucny uvod/trailer do ruby….

      1. Inkvizitor

        Re: co je ruby?
        Četl jsem jenom sekci věnovanou podobnostem a rozdílům oproti Pythonu a říká dost málo. Spíš propaganda, než užitečná informace.

        1. karmi

          Re: co je ruby?
          Ta je zrovna docela krátká — ale přijde mi docela pragmatická a objektivní, na základě čeho přesně se to zdá jako "propaganda"?

  2. skrat

    sinatra
    len skoda za sa sinatra nejak nevyvija, commity na githube su riedke a stare, ale inak svoj ucel plni aj v stave v akom je, cize ubereasy, ultrapocket

    1. karmi

      Re: sinatra
      Nene, *naprostý* opak je pravdou :) Vývoj Sinatry je nyní rozprostřen a neprobíhá jen v hlavní větvi Blake Mizeranyho (http://github.com/bmizerany/sinatra/commits/). I když, i tam je commit každých pár dní :)

      Díky síle Gitu a Githubu probíhá zásadní refaktoring ve forku Ryana Tomayka: http://github.com/rtomayko/sinatra/commits/master . Uvažované změny se týkají zejména kompatibility s ostatním Rack middleware, zpřehlednění kódu, deprecation redundantních částí API, apod. Pro kontext prosím čtěte tyto dvě oznámení: http://groups.google.com/group/sinatrarb/msg/0f65eedf125f0dde?hl=en a http://groups.google.com/group/sinatrarb/msg/7e4eca1bf28bb355?hl=en

  3. zoufalec

    instalace na Debianu unstable
    Celkem rád bych si to vyzkoušel, ale nejde mi to naistalovat. gem install sinatra jenom řekne:

    ERROR:  Error installing sinatra:
    	sinatra requires rack (~> 0.4.0, runtime)

    Přitom rack mám ve verzi 0.9.1. Pokud Sinatru nainstaluju s přepínačem --force, tak to stejně nejde spustit:

    /usr/lib/ruby/1.8/rubygems.rb:578:in `report_activate_error': RubyGem version error: rack(0.9.1 not ~> 0.4.0) (Gem::LoadError)
    1. tmp

      Re: instalace na Debianu unstable
      Tak to jsem rád, že s tím nezápasím sám. Mě se teda podařilo sinatru nainstalovat (na debian stable), ale už se mi nepodařilo spustit HalloWorld.
      postupoval jsem následovně:
      # apt-get install ruby libgems-ruby1.8 irb rubygems git libzlib-ruby
      # gem install sinatra

      ~/work$ cat myapp.rb
      # myapp.rb
      require 'rubygems'
      require 'sinatra'

      get '/' do
      'Hello world!'
      end

      ~/work$ ruby myapp.rb
      /var/lib/gems/1.8/gems/sinatra-0.3.3/lib/sinatra.rb:110:in `server': /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load — mongrel (LoadError)
      from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
      from /var/lib/gems/1.8/gems/rack-0.4.0/lib/rack/handler/mongrel.rb:1
      from (eval):1:in `server'
      from /var/lib/gems/1.8/gems/sinatra-0.3.3/lib/sinatra.rb:115:in `eval'
      from /var/lib/gems/1.8/gems/sinatra-0.3.3/lib/sinatra.rb:110:in `server'
      from /var/lib/gems/1.8/gems/sinatra-0.3.3/lib/sinatra.rb:115:in `run'
      from /var/lib/gems/1.8/gems/sinatra-0.3.3/lib/sinatra.rb:1481
      from myapp.rb:4

      Něco je špatně, ale co… zatr.

        1. karmi

          Re: instalace na Debianu unstable
          Správně, chcípe to na nedostupném Mongrelu (webserver v Ruby), což je divné, protože by se měl automaticky při nedostupném Mongrelu přepnout na Webrick (a ten je bundlovaný s Ruby).

          Zkuste `$ sudo gem install mongrel` a pak uvidíme dál .)

          1. tmp

            Re: instalace na Debianu unstable
            gem install mongrel vypada jako spravna cesta :)
            nicmene nejprve mam na vyber z 72 verzi mongrelu.. tak jsem zvolil prvni moznost
            mongrel 1.1.5 (ruby)

            pote jsem vyzvan k instalaci zavisleho fastthread s cimz souhlasim a volim verzi 1.0.1 (ruby)

            a instalace fastthread konci chybou:
            Building native extensions. This could take a while…
            extconf.rb:1:in `require': no such file to load — mkmf (LoadError)
            from extconf.rb:1

            ERROR: While executing gem … (RuntimeError)
            ERROR: Failed to build gem native extension.
            Gem files will remain installed in /var/lib/gems/1.8/gems/fastthread-1.0.1 for inspection.

            Results logged to /var/lib/gems/1.8/gems/fastthread-1.0.1/ext/fastthread/gem_make.out

            porad neco chybi.. mkmf reklbych

            1. Kamil

              Re: instalace na Debianu unstable
              Jo, všechny gem-y, které potřebují něco kompilovat, tak chtějí po systému compiler, knihovny a jiné srandy. Určitě je tedy třeba doinstalovat ruby1.8-dev balíček. Ten by měl potáhnout další development balíčky pokud již nejsou nainstalovány.

              1. karmi

                Re: instalace na Debianu unstable
                Existuje jeste jedna moznost, pokud se nepodari nainstalovat ten Mongrel.

                Nainstalovat si server Thin, jak radil @pm:

                $ sudo gem install thin
                

                A potom v HelloWorld aplikaci Thin prilinkovat:

                require 'rubygems'
                require 'sinatra'
                require 'thin'
                get "/" do
                  "Hello, it's #{Time.now} at the server!"
                end
                

                Kdyz pak „normalne“ spustite aplikaci:

                ruby hello_world.rb
                

                mela by si vybrat Thin misto Mongrelu jako Rack handler:

                == Sinatra/0.3.3 has taken the stage on port 4567 for development with backup by Rack::Handler::Thin
                
    2. karmi

      Re: instalace na Debianu unstable
      Hmmm, tady bych osobně zkusil klasický "dementní" postup: odinstalovat Rack a pak nainstalovat Sinatru (a s ním i Rack).

      Kdyby nešlo, napište verze Ruby, Rubygems, Racku.

      (Je taky možné, že ty závislosti (dependencies) Sinatry jsou špatně uvedené nebo implementované. Zkuste nejdřív odinstalace/instalace.)

    3. pm

      Re: instalace na Debianu unstable
      v gems je posledni verze sinatry, ktera nepodporuje rack 0.9.

      postup, ktery zarucene funguje (odzkouseno na OpenSUSE 11, ale urcite to pojede i na debianu, pokud ne, tak pisnete chyby)

      gem install rack
      


      (Successfully installed rack-0.9.1)

      gem install thin
      


      (Successfully installed thin-1.0.0)

      mkdir test-sin && cd test-sin 
      


      git clone git://github.com/rtomayko/sinatra/
      


      cat test-sin.rb

      require 'rubygems'
      $:.unshift File.dirname(__FILE__) + '/sinatra/lib'
      require 'sinatra'
      
      get '/about' do
        "I'm running on Version " + Sinatra::VERSION
      end
      


      pak uz jen

       run test-sin.rb 

      1. karmi

        Re: instalace na Debianu unstable

        @pm: Díky za návod!

        Jedno řešení je tohle: použít edge. Druhé, možná zatím lepší řešení je nainstalovat si Rack verze 0.4 — Sinatra je skutečně aktuálně zamčený na tuhle verzi. Instalace:

        $ sudo gem install rack -v 0.4

        Zkuste, dejte vědět.

  4. Anonym

    RE: Sinatra.rb aneb nejsnazší cesta k Ruby
    "Při nezasvěceném pohledu zvenčí by se mohlo zdát, že v programovacím jazyce Ruby existuje jediný webový framework"

    Ne, pri nezasvecen pohledu by se mohlo zdat, ze v Ruby se bez posahanych frameworku neda vubec nic delat.

  5. DarkTatka

    RE: Sinatra.rb aneb nejsnazší cesta k Ruby
    opravdu zacinam nenavidet ty naprosto nepruhledne linky. Uz jsme jen krok od "kliknete +zde+, +zde+ a +zde+.
    To je opravdu takovy problem napsat ze se sinatra da pouzivat s datamapperem a sequelemh?
    Jinak pekny clanek.

    1. Martin Hassman

      RE: Sinatra.rb aneb nejsnazší cesta k Ruby
      Nevidím to jako problém. Názvu obou projektů jsou v tom případě jen doplňující informace k textu článku. Základní a potřebné informace jsou přímo v textu uvedeny.

  6. lucastej

    RE: Sinatra.rb aneb nejsnazší cesta k Ruby
    Pěkný článek, díky za něj. Měl bych jen pár připomínek:

    – instaloval bych radši "json-pure" než "json", "json" je sice rychlejší, ale taky provázaná s Céčkem, takže nebude fungovat v (neupravených) Windows

    – File.mtime(cached_file) – ve Windows to vyhodí exception, pokud soubor neexistuje

    – mohl ses zmínit, že "last_modified()" je built-in helper pro Sinatru, trochu mě to zmátlo

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=2908