{"id":227,"date":"2011-02-07T12:27:13","date_gmt":"2011-02-07T12:27:13","guid":{"rendered":"http:\/\/blog.igloonet.cz\/?p=227"},"modified":"2014-08-11T22:02:47","modified_gmt":"2014-08-11T20:02:47","slug":"zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1","status":"publish","type":"post","link":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/","title":{"rendered":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s&nbsp;frameworkem Ruby on Rails (d\u00edl&nbsp;1.)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Kdy\u017e jsem p\u0159ed dv\u011bma lety p\u0159em\u00fd\u0161lel o&nbsp;tom, jak zefektivnit a&nbsp;zp\u0159\u00edjemnit svoj\u00ed program\u00e1torskou pr\u00e1ci, tak jsem je\u0161t\u011b netu\u0161il, \u017ee&nbsp;m\u011b osud zavede k&nbsp;Ruby on Rails, frameworku postaven\u00e9m na&nbsp;jazyce Ruby. Do&nbsp;t\u00e9 doby jsem pou\u017e\u00edval n\u011bkolik let programovac\u00ed jazyk PHP, kter\u00fd byl dosta\u010duj\u00edc\u00ed pro v\u011bt\u0161inu projekt\u016f, se kter\u00fdmi se b\u011b\u017en\u011b setk\u00e1v\u00e1m. V\u011bt\u0161ina lid\u00ed si \u0159ekne, co m\u011b teda vedlo k&nbsp;t\u00e9to zm\u011bn\u011b? Hlavn\u00edm d\u016fvodem bylo p\u0159edev\u0161\u00edm to, \u017ee&nbsp;pr\u00e1ce s&nbsp;t\u00edmto n\u00e1strojem je snadn\u011bj\u0161\u00ed a&nbsp;hlavn\u011b pro v\u00fdvoj\u00e1\u0159e mnohem p\u0159\u00edjemn\u011bj\u0161\u00ed. V&nbsp;tomto \u010dl\u00e1nku bych r\u00e1d p\u0159ibl\u00ed\u017eil pr\u00e1v\u011b ty prvky, kter\u00e9 n\u00e1m tento n\u00e1stroj p\u0159in\u00e1\u0161\u00ed a&nbsp;\u010d\u00edm m\u016f\u017ee uleh\u010dit program\u00e1torovi pr\u00e1ci.<!--more--><\/p>\n<h2>Programovac\u00ed jazyk&nbsp;Ruby<\/h2>\n<p>P\u0159ed samotn\u00fdm popisem Ruby on Rails je nutn\u00e9 zm\u00ednit alespo\u0148 p\u00e1r slov k&nbsp;programovac\u00edmu jazyku Ruby, na&nbsp;kter\u00e9m je tento webov\u00fd framework postaven. Tv\u016frcem je Yukihiro Matsumoto, v&nbsp;internetov\u00e9m sv\u011bt\u011b zn\u00e1m\u00fd pod&nbsp;p\u0159ezd\u00edvkou Matz. Z\u00e1m\u011brem bylo spojit prvky z&nbsp;jeho obl\u00edben\u00fdch programovac\u00edch jazyku (Perl, Smalltalk, Eiffel, Ada a&nbsp;Lisp). Poda\u0159ilo se mu zformovat nov\u00fd jazyk, kter\u00fd vyva\u017euje funkcion\u00e1ln\u00ed programov\u00e1n\u00ed s&nbsp;imperativn\u00edm. Matz p\u0159\u00edmo tvrd\u00ed ve&nbsp;sv\u00e9m \u010dl\u00e1nku, \u017ee&nbsp;se sna\u017eil utvo\u0159it Ruby p\u0159irozen\u00fd, ne jednoduch\u00fd.<\/p>\n<p><cite><br>\nRuby je jednoduch\u00fd navenek, ale velmi komplexn\u00ed uvnit\u0159, p\u0159esn\u011b jako na\u0161e lidsk\u00e9 t\u011blo.<br>\n<br>\n\u2014Yukihiro Matsumoto<br>\n<\/cite><\/p>\n<h3>Obl\u00edbenost tohoto n\u00e1stroje<\/h3>\n<p>Programovac\u00ed jazyk Ruby spat\u0159il poprv\u00e9 sv\u011btlo sv\u011bta v&nbsp;roce 1995. V\u011bt\u0161\u00ed pozornosti se mu dostalo a\u017e v&nbsp;posledn\u00edch letech, a&nbsp;to ve&nbsp;spojen\u00ed s&nbsp;frameworkem Ruby on Rails. <a href=\"http:\/\/www.tiobe.com\/index.php\/content\/paperinfo\/tpci\/index.html\">Index TIOBE1<\/a>,<br>\nkter\u00fd m\u011b\u0159\u00ed n\u00e1r\u016fst programovac\u00edch jazyku, uv\u00e1d\u00ed Ruby v&nbsp;lednu 2011 na&nbsp;des\u00e1t\u00e9m m\u00edst\u011b mezi v\u0161emi programovac\u00edmi jazyky na&nbsp;sv\u011bt\u011b. Mno\u017estv\u00ed popularity je p\u0159isuzov\u00e1no po\u010dtu softwaru napsan\u00e9ho v&nbsp;Ruby. Ruby je k&nbsp;dispozici zcela zdarma. Voln\u011b ho lze u\u017e\u00edvat, kop\u00edrovat, upravovat a&nbsp;distribuovat.<\/p>\n<p><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/2011\/01\/tpci_trends.png\" alt=\"tiobe\"><\/p>\n<h3>V\u0161e, na&nbsp;co si vzpomenete, je objektem<\/h3>\n<p>Ruby je pln\u011b objektov\u00fd programovac\u00ed jazyk. To m\u00e1 za n\u00e1sledek, \u017ee&nbsp;v\u0161e, co v\u00fdvoj\u00e1\u0159 v&nbsp;k\u00f3du pou\u017eije, je objektem. Mu\u017ee si pak dovolit vyu\u017e\u00edt i&nbsp;takov\u00fdch konstrukc\u00ed, kter\u00e9 ukazuje n\u00e1sleduj\u00edc\u00ed p\u0159\u00edklad.<\/p>\n<pre>\n2.times {print \"Hello world \"}\n&gt;&gt; Hello world Hello world\n<\/pre>\n<p>Ka\u017ed\u00fd kousek k\u00f3du m\u00e1 svoje vlastnosti a&nbsp;akce. V&nbsp;objektov\u011b-orientovan\u00e9m programov\u00e1n\u00ed jsou vlastnosti naz\u00fdv\u00e1ny instan\u010dn\u00ed prom\u011bnn\u00e9 a&nbsp;akce jsou zn\u00e1my jako metody. Mnoho programovac\u00edch jazyku nem\u00e1 \u010d\u00edsla a&nbsp;dal\u0161\u00ed primitivn\u00ed typy implementov\u00e1ny jako objekty. Zde tomu tak nen\u00ed a&nbsp;opravdu ka\u017ed\u00fd typ zde m\u00e1 svoje instan\u010dn\u00ed prom\u011bnn\u00e9 a&nbsp;akce. Pro uk\u00e1zku, nap\u0159\u00edklad v&nbsp;jazyce Java je mo\u017en\u00e9 z\u00edskat absolutn\u00ed hodnotu n\u011bjak\u00e9ho \u010d\u00edsla tak, \u017ee&nbsp;se zavol\u00e1 odd\u011blen\u00e1 funkce a&nbsp;n\u00e1sledn\u011b se j\u00ed p\u0159ed\u00e1 pot\u0159ebn\u00e1 hodnota. Bude pou\u017eito nejsp\u00ed\u0161 n\u011bco takov\u00e9ho:<\/p>\n<pre>\nnumber = Math.abs(-5) \/\/ Java k\u00f3d\n<\/pre>\n<p>Jak ji\u017e bylo zm\u00edn\u011bno, \u010d\u00edsla vystupuj\u00ed v&nbsp;roli objektu. Proto jazyk Ruby poskytuje mo\u017enost zjistit absolutn\u00ed hodnotu pomoc\u00ed vlastn\u00ed metody dan\u00e9ho \u010d\u00edsla. Pro zji\u0161t\u011bn\u00ed v\u00fdsledku se jednodu\u0161e pou\u017eije n\u00e1sleduj\u00edc\u00ed vol\u00e1n\u00ed:<\/p>\n<pre>\nnumber = -5.abs # Ruby k\u00f3d\n<\/pre>\n<p>Tak\u00e9 t\u0159\u00eddy objektu vystupuj\u00ed v&nbsp;tomto jazyce jako objekty. Je mo\u017en\u00e9 proto s&nbsp;nimi d\u011blat v\u0161echny b\u011b\u017en\u00e9 v\u011bci jako s&nbsp;ostatn\u00edmi objekty v&nbsp;Ruby. Vytv\u00e1\u0159et lze \u00fapln\u011b nov\u00e9 t\u0159\u00eddy objektu, editovat st\u00e1vaj\u00edc\u00ed p\u0159id\u00e1n\u00edm nebo odebr\u00e1n\u00edm metod. Lze dokonce naklonovat t\u0159\u00eddu, upravovat pak jej\u00ed kopii a&nbsp;origin\u00e1l tak zachovat.<\/p>\n<h3>Flexibilita<\/h3>\n<p>Programovac\u00ed jazyk Ruby p\u0159ich\u00e1z\u00ed s&nbsp;v\u011bt\u0161\u00ed \ufb02exibilitou, proto\u017ee dovoluje v\u00fdvoj\u00e1\u0159\u016fm voln\u011b m\u011bnit vlastn\u00ed \u010d\u00e1sti jazyka. Z\u00e1kladn\u00ed metody tak mohou b\u00fdt zcela odebr\u00e1ny nebo znovu de\ufb01nov\u00e1ny. Program\u00e1tor m\u00e1 v&nbsp;tomto sm\u011bru naprosto volnou ruku. V\u0161e si lze p\u0159edstavit na&nbsp;n\u00e1sleduj\u00edc\u00edm jednoduch\u00e9m p\u0159\u00edkladu. S\u010d\u00edt\u00e1n\u00ed je b\u011b\u017en\u011b reprezentov\u00e1no pomoc\u00ed oper\u00e1toru plus (+). Ve&nbsp;vytv\u00e1\u0159en\u00e9m programu bychom rad\u011bji pou\u017eili citeln\u011bj\u0161\u00ed slovo <em>plus<\/em>. Jednodu\u0161e je tak mo\u017en\u00e9 p\u0159idat novou metodu do&nbsp;t\u0159\u00eddy <em>Numeric<\/em>. Dos\u00e1hne se toho, \u017ee&nbsp;pak u&nbsp;libovoln\u00e9ho \u010d\u00edsla v&nbsp;na\u0161em syst\u00e9mu bude dovoleno vyu\u017e\u00edvat tuto novou metodu.<\/p>\n<pre>\nclass Numeric\n    def plus(x)\n        self.+(x)\n    end\nend\ny = 5.plus 6\n# y je nyn\u00ed rovno \u010d\u00edslu 11\n<\/pre>\n<p>Dal\u0161\u00ed v\u011bc\u00ed, kterou se Ruby odli\u0161uje od&nbsp;ostatn\u00edch n\u00e1stroj\u016f, je zp\u016fsob, jak\u00fdm lze ps\u00e1t k\u00f3d. Syntaxe pak ve&nbsp;v\u00fdsledku p\u0159ipom\u00edn\u00e1 sp\u00ed\u0161e psanou v\u011btu ne\u017e k\u00f3d programovac\u00edho jazyka. Auto\u0159i tohoto n\u00e1stroje si t\u00e9to vlastnosti velmi cen\u00ed a&nbsp;i&nbsp;zku\u0161enosti mnoha program\u00e1tor\u016f \u0159\u00edkaj\u00ed, \u017ee&nbsp;jakmile si v\u00fdvoj\u00e1\u0159 na&nbsp;tento styl psan\u00ed k\u00f3du zvykne, nebude cht\u00edt pou\u017e\u00edvat nic jin\u00e9ho. Doc\u00edl\u00ed se t\u00edm pot\u00e9 i&nbsp;p\u011bkn\u00e9 \u010ditelnosti a&nbsp;\u00faspory syntaxe. Jednoduch\u00fd p\u0159\u00edklad je vid\u011bt na&nbsp;n\u00e1sleduj\u00edc\u00ed uk\u00e1zce.<\/p>\n<pre>\nbody += additional_text unless additional_text.nil?\n<\/pre>\n<p>Pro nov\u00e9 v\u00fdvoj\u00e1\u0159e, kte\u0159\u00ed p\u0159e\u0161li k&nbsp;Ruby z&nbsp;n\u011bkter\u00e9ho imperativn\u00edho programovac\u00edho jazyka jako je Visual Basic nebo PHP, je velice obl\u00edbenou vlastnost\u00ed pou\u017e\u00edv\u00e1n\u00ed takzvan\u00fdch blok\u016f. Program\u00e1tor je schopn\u00fd pomoc\u00ed bloku p\u0159ipojit na&nbsp;konec libovoln\u00e9 metody vlastn\u00ed \u010d\u00e1st zdrojov\u00e9ho k\u00f3du, ve&nbsp;kter\u00e9m pop\u00ed\u0161e po\u017eadovan\u00e9 chov\u00e1n\u00ed. Psan\u00ed bloku je inspirov\u00e1no p\u0159edev\u0161\u00edm funkcion\u00e1ln\u00edmi jazyky. Na&nbsp;n\u00e1sleduj\u00edc\u00ed uk\u00e1zce je p\u0159edvedeno pou\u017eit\u00ed bloku mezi konstrukc\u00ed <em>do<\/em> a&nbsp;<em>end<\/em>. Metoda <em>map<\/em> pak aplikuje n\u00e1\u0161 blok na&nbsp;uveden\u00fd seznam slov.<\/p>\n<pre>\nsearch_engines =\n    %w[Google Yahoo MSN].map do |engine|\n        \"http:\/\/www.\" + engine.downcase + \".com\"\n    end\n<\/pre>\n<h3>Zpest\u0159en\u00ed zdrojov\u00e9ho k\u00f3du<\/h3>\n<p>P\u0159i programov\u00e1n\u00ed lze pom\u011brn\u011b rychle zjistit, \u017ee&nbsp;Ruby rozum\u00ed spoust\u011b konstrukc\u00ed. Z\u00e1vorky je mo\u017en\u00e9 pou\u017e\u00edvat ke&nbsp;zp\u0159ehledn\u011bn\u00ed psan\u00e9ho k\u00f3du, av\u0161ak d\u00e1 se obej\u00edt i&nbsp;bez nich. Stejn\u011b se tento jazyk stav\u00ed i&nbsp;k&nbsp;pou\u017e\u00edv\u00e1n\u00ed st\u0159edn\u00edku pro ukon\u010den\u00ed p\u0159\u00edkazu na&nbsp;\u0159\u00e1dku. Ob\u011b n\u00e1sleduj\u00edc\u00ed vol\u00e1n\u00ed jsou proto ekvivalentn\u00ed:<\/p>\n<pre>\nnumber = (2 + 1);\nnumber = 2 + 1\n<\/pre>\n<p>Nov\u00e9 prom\u011bnn\u00e9, kter\u00e9 bude pot\u0159eba pou\u017e\u00edvat, nen\u00ed nutn\u00e9 p\u0159edem deklarovat. Pro jejich ozna\u010den\u00ed je zde n\u011bkolik z\u00e1kladn\u00edch konvenc\u00ed, kter\u00fdmi je vhodn\u00e9 se&nbsp;\u0159\u00eddit.<\/p>\n<ul>\n<li><em>var<\/em> je ozna\u010den\u00ed pro lok\u00e1ln\u00ed prom\u011bnnou<\/li>\n<li><em>@var<\/em> ozna\u010duje instan\u010dn\u00ed prom\u011bnnou<\/li>\n<li><em>$var<\/em> se pou\u017e\u00edv\u00e1 pro glob\u00e1ln\u00ed prom\u011bnn\u00e9<\/li>\n<\/ul>\n<p>Dodr\u017een\u00ed t\u011bchto pravidel pak zvy\u0161uje \u010ditelnost k\u00f3du a&nbsp;dovoluje program\u00e1tor\u016fm jednodu\u0161e ozna\u010dit role ka\u017ed\u00e9 prom\u011bnn\u00e9.<\/p>\n<h2>Co m\u016f\u017eeme \u010dekat v&nbsp;dal\u0161\u00edm d\u00edle?<\/h2>\n<p>V tomto \u010dl\u00e1nku jsem cht\u011bl \u010dten\u00e1\u0159\u016fm poskytnout \u00favod k&nbsp;bli\u017e\u0161\u00edmu vypr\u00e1v\u011bn\u00ed ohledn\u011b frameworku Ruby on Rails. Zam\u011b\u0159il jsem se p\u0159edev\u0161\u00edm na&nbsp;popis jazyka Ruby, na&nbsp;kter\u00e9m je samotn\u00fd framework postavem. V&nbsp;dal\u0161\u00edm d\u00edle se budu zab\u00fdvat samotn\u00fdm n\u00e1strojem Ruby on Rails a&nbsp;zm\u00edn\u00edm jeho v\u00fdzna\u010dn\u00e9 prvky.<\/p>\n<h2>Zdroje a&nbsp;odkazy na&nbsp;podrobn\u011bj\u0161\u00ed informace<\/h2>\n<ul>\n<li>Pe\u0161out, M.: Diplomov\u00e1 pr\u00e1ce Webov\u00e1 aplikace pro \u0159\u00edzen\u00ed projektu a&nbsp;spr\u00e1vu \u00faloh, jaro&nbsp;2009<\/li>\n<li>Ofici\u00e1ln\u00ed pr\u016fvodce Ruby on Rails, <a href=\"http:\/\/guides.rubyonrails.cz\/\">http:\/\/guides.rubyonrails.cz\/<\/a>, \u00fanor&nbsp;2011<\/li>\n<li>Holzner, S.: Za\u010d\u00edn\u00e1me programovat v&nbsp;Ruby on Rails, Computer Press, kv\u011bten 2007<\/li>\n<li>Thomas, D. a&nbsp;Hansson, D.: Agile Web Development with Rails, The Pragmatic Progra-mmers LLC, prosinec 2005<\/li>\n<li>Ruby on Rails: Rails Internationalization (I18n) API, <a href=\"http:\/\/guides.rubyonrails.org\/i18n.html\">http:\/\/guides.rubyonrails.org\/i18n.html<\/a>, listopad 2008<\/li>\n<li>TIOBE Software BV: The Ruby Programming Language, <a href=\"http:\/\/www.tiobe.com\/index.php\/paperinfo\/tpci\/Ruby.html\">http:\/\/www.tiobe.com\/index.php\/paperinfo\/tpci\/Ruby.html<\/a>, duben&nbsp;2009<\/li>\n<li>Root.cz: Seri\u00e1l Ruby on Rails, <a href=\"http:\/\/www.root.cz\/serialy\/ruby-on-rails\/\">http:\/\/www.root.cz\/serialy\/ruby-on-rails\/<\/a>, b\u0159ezen 2006<\/li>\n<li>Ruby on Rails: Rails Wiki, <a href=\"http:\/\/wiki.rubyonrails.org\/\">http:\/\/wiki.rubyonrails.org\/<\/a>, kv\u011bten 2009<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Kdy\u017e jsem p\u0159ed dv\u011bma lety p\u0159em\u00fd\u0161lel o&nbsp;tom, jak zefektivnit a&nbsp;zp\u0159\u00edjemnit svoj\u00ed program\u00e1torskou pr\u00e1ci, tak jsem je\u0161t\u011b netu\u0161il, \u017ee&nbsp;m\u011b osud zavede k&nbsp;Ruby on Rails, frameworku postaven\u00e9m na&nbsp;jazyce Ruby. Do&nbsp;t\u00e9 doby jsem pou\u017e\u00edval n\u011bkolik let programovac\u00ed jazyk PHP, kter\u00fd byl dosta\u010duj\u00edc\u00ed pro v\u011bt\u0161inu projekt\u016f, se kter\u00fdmi se b\u011b\u017en\u011b setk\u00e1v\u00e1m. V\u011bt\u0161ina lid\u00ed si \u0159ekne, co m\u011b teda vedlo k&nbsp;t\u00e9to zm\u011bn\u011b? Hlavn\u00edm d\u016fvodem bylo p\u0159edev\u0161\u00edm to, \u017ee&nbsp;pr\u00e1ce s&nbsp;t\u00edmto n\u00e1strojem je snadn\u011bj\u0161\u00ed a&nbsp;hlavn\u011b pro v\u00fdvoj\u00e1\u0159e mnohem p\u0159\u00edjemn\u011bj\u0161\u00ed. V&nbsp;tomto \u010dl\u00e1nku bych r\u00e1d p\u0159ibl\u00ed\u017eil pr\u00e1v\u011b ty&nbsp;prvky,<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[71],"tags":[11,12],"class_list":["post-227","post","type-post","status-publish","format-standard","hentry","category-vyvoj","tag-ruby","tag-ruby-on-rails"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog\" \/>\n<meta property=\"og:description\" content=\"Kdy\u017e jsem p\u0159ed dv\u011bma lety p\u0159em\u00fd\u0161lel o&nbsp;tom, jak zefektivnit a&nbsp;zp\u0159\u00edjemnit svoj\u00ed program\u00e1torskou pr\u00e1ci, tak jsem je\u0161t\u011b netu\u0161il, \u017ee&nbsp;m\u011b osud zavede k&nbsp;Ruby on Rails, frameworku postaven\u00e9m na&nbsp;jazyce Ruby. Do&nbsp;t\u00e9 doby jsem pou\u017e\u00edval n\u011bkolik let programovac\u00ed jazyk PHP, kter\u00fd byl dosta\u010duj\u00edc\u00ed pro v\u011bt\u0161inu projekt\u016f, se kter\u00fdmi se b\u011b\u017en\u011b setk\u00e1v\u00e1m. V\u011bt\u0161ina lid\u00ed si \u0159ekne, co m\u011b teda vedlo k&nbsp;t\u00e9to zm\u011bn\u011b? Hlavn\u00edm d\u016fvodem bylo p\u0159edev\u0161\u00edm to, \u017ee&nbsp;pr\u00e1ce s&nbsp;t\u00edmto n\u00e1strojem je snadn\u011bj\u0161\u00ed a&nbsp;hlavn\u011b pro v\u00fdvoj\u00e1\u0159e mnohem p\u0159\u00edjemn\u011bj\u0161\u00ed. V&nbsp;tomto \u010dl\u00e1nku bych r\u00e1d p\u0159ibl\u00ed\u017eil pr\u00e1v\u011b ty prvky,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\" \/>\n<meta property=\"og:site_name\" content=\"igloonet blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/igloonet\" \/>\n<meta property=\"article:published_time\" content=\"2011-02-07T12:27:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-08-11T20:02:47+00:00\" \/>\n<meta name=\"author\" content=\"Martin Pe\u0161out\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@martinpesout\" \/>\n<meta name=\"twitter:site\" content=\"@igloonet\" \/>\n<meta name=\"twitter:label1\" content=\"Napsal(a)\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin Pe\u0161out\" \/>\n\t<meta name=\"twitter:label2\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\"},\"author\":{\"name\":\"Martin Pe\u0161out\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/8c731b61fb41d87a83ec347b7b85f17f\"},\"headline\":\"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s&nbsp;frameworkem Ruby on Rails (d\u00edl&nbsp;1.)\",\"datePublished\":\"2011-02-07T12:27:13+00:00\",\"dateModified\":\"2014-08-11T20:02:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\"},\"wordCount\":1341,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\"},\"keywords\":[\"Ruby\",\"Ruby on Rails\"],\"articleSection\":[\"V\u00fdvoj\"],\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\",\"url\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\",\"name\":\"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog\",\"isPartOf\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#website\"},\"datePublished\":\"2011-02-07T12:27:13+00:00\",\"dateModified\":\"2014-08-11T20:02:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"V\u00fdvoj\",\"item\":\"https:\/\/igloonet.cz\/blog\/rubriky\/vyvoj\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s&nbsp;frameworkem Ruby on Rails (d\u00edl&nbsp;1.)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#website\",\"url\":\"https:\/\/igloonet.cz\/blog\/\",\"name\":\"igloonet blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/igloonet.cz\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\",\"name\":\"igloonet\",\"url\":\"https:\/\/igloonet.cz\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png\",\"contentUrl\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png\",\"width\":650,\"height\":465,\"caption\":\"igloonet\"},\"image\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/igloonet\",\"https:\/\/x.com\/igloonet\",\"https:\/\/instagram.com\/igloonet\/\",\"https:\/\/www.linkedin.com\/company\/igloonet\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/8c731b61fb41d87a83ec347b7b85f17f\",\"name\":\"Martin Pe\u0161out\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/032ee2fb90b35a9a451f30dac27d46caf09d97dea956a64a208abc47dfca3251?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/032ee2fb90b35a9a451f30dac27d46caf09d97dea956a64a208abc47dfca3251?s=96&d=retro&r=g\",\"caption\":\"Martin Pe\u0161out\"},\"description\":\"Jsem brn\u011bnsk\u00fd UI v\u00fdvoj\u00e1\u0159 p\u011bkn\u00e9ho frontendu. Od mali\u010dka si potrp\u00edm na detail, ale p\u0159itom kladu d\u016fraz na jednoduchost a p\u0159ehlednost. Zast\u00e1v\u00e1m n\u00e1zor, \u017ee jednodu\u0161\u0161\u00ed weby jsou ty nejkr\u00e1sn\u011bj\u0161\u00ed.\",\"sameAs\":[\"https:\/\/igloonet.cz\/vyvoj\",\"https:\/\/x.com\/martinpesout\"],\"url\":\"https:\/\/igloonet.cz\/blog\/author\/cheetah\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/","og_locale":"cs_CZ","og_type":"article","og_title":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog","og_description":"Kdy\u017e jsem p\u0159ed dv\u011bma lety p\u0159em\u00fd\u0161lel o&nbsp;tom, jak zefektivnit a&nbsp;zp\u0159\u00edjemnit svoj\u00ed program\u00e1torskou pr\u00e1ci, tak jsem je\u0161t\u011b netu\u0161il, \u017ee&nbsp;m\u011b osud zavede k&nbsp;Ruby on Rails, frameworku postaven\u00e9m na&nbsp;jazyce Ruby. Do&nbsp;t\u00e9 doby jsem pou\u017e\u00edval n\u011bkolik let programovac\u00ed jazyk PHP, kter\u00fd byl dosta\u010duj\u00edc\u00ed pro v\u011bt\u0161inu projekt\u016f, se kter\u00fdmi se b\u011b\u017en\u011b setk\u00e1v\u00e1m. V\u011bt\u0161ina lid\u00ed si \u0159ekne, co m\u011b teda vedlo k&nbsp;t\u00e9to zm\u011bn\u011b? Hlavn\u00edm d\u016fvodem bylo p\u0159edev\u0161\u00edm to, \u017ee&nbsp;pr\u00e1ce s&nbsp;t\u00edmto n\u00e1strojem je snadn\u011bj\u0161\u00ed a&nbsp;hlavn\u011b pro v\u00fdvoj\u00e1\u0159e mnohem p\u0159\u00edjemn\u011bj\u0161\u00ed. V&nbsp;tomto \u010dl\u00e1nku bych r\u00e1d p\u0159ibl\u00ed\u017eil pr\u00e1v\u011b ty prvky,","og_url":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/","og_site_name":"igloonet blog","article_publisher":"https:\/\/www.facebook.com\/igloonet","article_published_time":"2011-02-07T12:27:13+00:00","article_modified_time":"2014-08-11T20:02:47+00:00","author":"Martin Pe\u0161out","twitter_card":"summary_large_image","twitter_creator":"@martinpesout","twitter_site":"@igloonet","twitter_misc":{"Napsal(a)":"Martin Pe\u0161out","Odhadovan\u00e1 doba \u010dten\u00ed":"7 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#article","isPartOf":{"@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/"},"author":{"name":"Martin Pe\u0161out","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/8c731b61fb41d87a83ec347b7b85f17f"},"headline":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s&nbsp;frameworkem Ruby on Rails (d\u00edl&nbsp;1.)","datePublished":"2011-02-07T12:27:13+00:00","dateModified":"2014-08-11T20:02:47+00:00","mainEntityOfPage":{"@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/"},"wordCount":1341,"commentCount":8,"publisher":{"@id":"https:\/\/igloonet.cz\/blog\/#organization"},"keywords":["Ruby","Ruby on Rails"],"articleSection":["V\u00fdvoj"],"inLanguage":"cs","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/","url":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/","name":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s frameworkem Ruby on Rails (d\u00edl 1.) | igloonet blog","isPartOf":{"@id":"https:\/\/igloonet.cz\/blog\/#website"},"datePublished":"2011-02-07T12:27:13+00:00","dateModified":"2014-08-11T20:02:47+00:00","breadcrumb":{"@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/igloonet.cz\/blog\/zprijemnete-si-vyvoj-webovych-stranek-s-frameworkem-ruby-on-rails-dil-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"V\u00fdvoj","item":"https:\/\/igloonet.cz\/blog\/rubriky\/vyvoj\/"},{"@type":"ListItem","position":2,"name":"Zp\u0159\u00edjemn\u011bte si v\u00fdvoj webov\u00fdch str\u00e1nek s&nbsp;frameworkem Ruby on Rails (d\u00edl&nbsp;1.)"}]},{"@type":"WebSite","@id":"https:\/\/igloonet.cz\/blog\/#website","url":"https:\/\/igloonet.cz\/blog\/","name":"igloonet blog","description":"","publisher":{"@id":"https:\/\/igloonet.cz\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/igloonet.cz\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":"Organization","@id":"https:\/\/igloonet.cz\/blog\/#organization","name":"igloonet","url":"https:\/\/igloonet.cz\/blog\/","logo":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png","contentUrl":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png","width":650,"height":465,"caption":"igloonet"},"image":{"@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/igloonet","https:\/\/x.com\/igloonet","https:\/\/instagram.com\/igloonet\/","https:\/\/www.linkedin.com\/company\/igloonet"]},{"@type":"Person","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/8c731b61fb41d87a83ec347b7b85f17f","name":"Martin Pe\u0161out","image":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/032ee2fb90b35a9a451f30dac27d46caf09d97dea956a64a208abc47dfca3251?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/032ee2fb90b35a9a451f30dac27d46caf09d97dea956a64a208abc47dfca3251?s=96&d=retro&r=g","caption":"Martin Pe\u0161out"},"description":"Jsem brn\u011bnsk\u00fd UI v\u00fdvoj\u00e1\u0159 p\u011bkn\u00e9ho frontendu. Od mali\u010dka si potrp\u00edm na detail, ale p\u0159itom kladu d\u016fraz na jednoduchost a p\u0159ehlednost. Zast\u00e1v\u00e1m n\u00e1zor, \u017ee jednodu\u0161\u0161\u00ed weby jsou ty nejkr\u00e1sn\u011bj\u0161\u00ed.","sameAs":["https:\/\/igloonet.cz\/vyvoj","https:\/\/x.com\/martinpesout"],"url":"https:\/\/igloonet.cz\/blog\/author\/cheetah\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":3,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"predecessor-version":[{"id":2474,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/227\/revisions\/2474"}],"wp:attachment":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/tags?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}