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.
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….
Re: co je ruby?
Ale prosím. Nemožné děláme na počkání, zázraky pak do druhého dne. Libo snad některý z následujících seriálů?
Re: co je ruby?
Dovolil bych si spíše doporučit:
–> http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/
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.
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"?
Re: co je ruby?
Ruby má mnohem lepší podporu pro metaprogramování a např. tvorbu DSL
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
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
Re: sinatra
ode dneska uz je sinatra k dispozici na:
http://github.com/sinatra/sinatra/tree/master
:)
Re: sinatra
Je to tak: http://groups.google.com/group/sinatrarb/msg/a405d1b851f57960?hl=en .)
Re: sinatra
Zde najdete changelog pro novou verzi Sinatry (kompatibilní s Rack 0.9):
–> http://github.com/sinatra/sinatra/raw/master/CHANGES
instalace na Debianu unstable
Celkem rád bych si to vyzkoušel, ale nejde mi to naistalovat.
gem install sinatra
jenom řekne:Přitom rack mám ve verzi 0.9.1. Pokud Sinatru nainstaluju s přepínačem
--force
, tak to stejně nejde spustit: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.
Re: instalace na Debianu unstable
Podle té chyby bych zkusil doinstalovat ještě 'mongrel'.
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 .)
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
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.
Re: instalace na Debianu unstable
Existuje jeste jedna moznost, pokud se nepodari nainstalovat ten Mongrel.
Nainstalovat si server Thin, jak radil @pm:
A potom v HelloWorld aplikaci Thin prilinkovat:
Kdyz pak „normalne“ spustite aplikaci:
mela by si vybrat Thin misto Mongrelu jako Rack handler:
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.)
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)
(Successfully installed rack-0.9.1)
(Successfully installed thin-1.0.0)
cat test-sin.rb
pak uz jen
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:
Zkuste, dejte vědět.
Re: instalace na Debianu unstable
Mockrát děkuji, s touhle vynucenou verzí vše funguje jak má.
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.
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.
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.
RE: Sinatra.rb aneb nejsnazší cesta k Ruby
Copak Vy…
Vydána nová verze Sinatry (0.9.0)
V gemech je nyní dostupná nová verze Sinatry, která je kompatibilní s Rack 0.9.1, viz zpráva: http://groups.google.com/group/sinatrarb/msg/1fbc3b0311f256c7?hl=en
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