sinatra 1.1.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.ru.rdoc CHANGED
@@ -39,6 +39,10 @@ Sinatra — это предметно-ориентированный язык (D
39
39
  .. что-то удалить ..
40
40
  end
41
41
 
42
+ options '/' do
43
+ .. что-то ответить ..
44
+ end
45
+
42
46
  Маршруты сверяются с запросом по очередности определения. Первый же совпавший с запросом маршрут и будет вызван.
43
47
 
44
48
  Шаблоны маршрутов могут включать в себя параметры доступные в
@@ -168,9 +172,9 @@ Sinatra — это предметно-ориентированный язык (D
168
172
 
169
173
  === Haml шаблоны
170
174
 
171
- Haml gem/библиотека необходима для рендеринга HAML шаблонов:
175
+ <tt>haml</tt> gem/библиотека необходима для рендеринга HAML шаблонов:
172
176
 
173
- ## Вам нужно будет подключить haml gem в приложении
177
+ # Вам нужно будет подключить haml gem в приложении
174
178
  require 'haml'
175
179
 
176
180
  get '/' do
@@ -193,33 +197,44 @@ Haml gem/библиотека необходима для рендеринга H
193
197
 
194
198
  === Erb шаблоны
195
199
 
196
- ## Вам нужно будет подключить erb в приложении
200
+ # Вам нужно будет подключить erb в приложении
197
201
  require 'erb'
198
202
 
199
203
  get '/' do
200
204
  erb :index
201
205
  end
202
206
 
203
- Отрисует <tt>./views/index.erb</tt>
207
+ Отрисует <tt>./views/index.erb</tt>.
204
208
 
205
209
  === Erubis шаблоны
206
210
 
207
- Erubis gem/библиотека необходима для рендеринга erubis шаблонов:
211
+ <tt>erubis</tt> gem/библиотека необходима для рендеринга Erubis шаблонов:
208
212
 
209
- ## Вам нужно будет подключить erubis в приложении
213
+ # Вам нужно будет подключить Erubis в приложении
210
214
  require 'erubis'
211
215
 
212
216
  get '/' do
213
217
  erubis :index
214
218
  end
215
219
 
216
- Отрисует <tt>./views/index.erubis</tt>
220
+ Отрисует <tt>./views/index.erubis</tt>.
221
+
222
+ Также возможно заменить Erb на Erubis:
223
+
224
+ require 'erubis'
225
+ Tilt.register :erb, Tilt[:erubis]
226
+
227
+ get '/' do
228
+ erb :index
229
+ end
230
+
231
+ Отрисует <tt>./views/index.erb</tt> с помощью Erubis.
217
232
 
218
233
  === Builder шаблоны
219
234
 
220
- Builder gem/библиотека необходима для рендеринга builder шаблонов:
235
+ <tt>builder</tt> gem/библиотека необходима для рендеринга builder шаблонов:
221
236
 
222
- ## Вам нужно будет подключить builder в приложении
237
+ # Вам нужно будет подключить builder в приложении
223
238
  require 'builder'
224
239
 
225
240
  get '/' do
@@ -230,9 +245,9 @@ Builder gem/библиотека необходима для рендеринг
230
245
 
231
246
  === Nokogiri шаблоны
232
247
 
233
- Nokogiri gem/библиотека необходима для рендеринга nokogiri шаблонов:
248
+ <tt>nokogiri</tt> gem/библиотека необходима для рендеринга nokogiri шаблонов:
234
249
 
235
- ## Вам нужно будет подключить nokogiri в приложении
250
+ # Вам нужно будет подключить nokogiri в приложении
236
251
  require 'nokogiri'
237
252
 
238
253
  get '/' do
@@ -243,9 +258,9 @@ Nokogiri gem/библиотека необходима для рендеринг
243
258
 
244
259
  === Sass шаблоны
245
260
 
246
- Haml gem/библиотека необходима для рендеринга Sass шаблонов:
261
+ <tt>haml</tt> gem/библиотека необходима для рендеринга Sass шаблонов:
247
262
 
248
- ## Вам нужно будет подключить haml или sass в приложении
263
+ # Вам нужно будет подключить haml или sass в приложении
249
264
  require 'sass'
250
265
 
251
266
  get '/stylesheet.css' do
@@ -267,9 +282,9 @@ Haml gem/библиотека необходима для рендеринга S
267
282
 
268
283
  === Scss шаблоны
269
284
 
270
- Haml gem/библиотека необходима для рендеринга Scss шаблонов:
285
+ <tt>haml</tt> gem/библиотека необходима для рендеринга Scss шаблонов:
271
286
 
272
- ## Вам нужно будет подключить haml или sass в приложении
287
+ # Вам нужно будет подключить haml или sass в приложении
273
288
  require 'sass'
274
289
 
275
290
  get '/stylesheet.css' do
@@ -291,9 +306,9 @@ Haml gem/библиотека необходима для рендеринга S
291
306
 
292
307
  === Less шаблоны
293
308
 
294
- less gem/библиотека необходима для рендеринга Less шаблонов:
309
+ <tt>less</tt> gem/библиотека необходима для рендеринга Less шаблонов:
295
310
 
296
- ## Вам нужно будет подключить less в приложении
311
+ # Вам нужно будет подключить less в приложении
297
312
  require 'less'
298
313
 
299
314
  get '/stylesheet.css' do
@@ -304,9 +319,9 @@ less gem/библиотека необходима для рендеринга L
304
319
 
305
320
  === Liquid шаблоны
306
321
 
307
- liquid gem/библиотека необходима для рендеринга liquid шаблонов:
322
+ <tt>liquid</tt> gem/библиотека необходима для рендеринга liquid шаблонов:
308
323
 
309
- ## Вам нужно будет подключить liquid в приложении
324
+ # Вам нужно будет подключить liquid в приложении
310
325
  require 'liquid'
311
326
 
312
327
  get '/' do
@@ -322,9 +337,9 @@ liquid gem/библиотека необходима для рендеринга
322
337
 
323
338
  === Markdown шаблоны
324
339
 
325
- rdiscount gem/библиотека необходима для рендеринга Markdown шаблонов:
340
+ <tt>rdiscount</tt> gem/библиотека необходима для рендеринга Markdown шаблонов:
326
341
 
327
- ## Вам нужно будет подключить rdiscount в приложении
342
+ # Вам нужно будет подключить rdiscount в приложении
328
343
  require "rdiscount"
329
344
 
330
345
  get '/' do
@@ -335,7 +350,7 @@ rdiscount gem/библиотека необходима для рендерин
335
350
  расширениями).
336
351
 
337
352
  В Markdown невозможно вызывать методы или передавать локальные переменные.
338
- Следовательно, вам скорее всего придется использовать этот шаблон совместно с другим
353
+ Следовательно, вам, скорее всего, придется использовать этот шаблон совместно с другим
339
354
  движком рендеринга:
340
355
 
341
356
  erb :overview, :locals => { :text => markdown(:introduction) }
@@ -345,6 +360,28 @@ rdiscount gem/библиотека необходима для рендерин
345
360
  %h1 Hello From Haml!
346
361
  %p= markdown(:greetings)
347
362
 
363
+ Вы не можете вызывать Ruby из Markdown, соответственно, вы не можете использовать
364
+ лэйаут-шаблоны (layouts) на Markdown. Тем не менее, есть возможность использовать один
365
+ движок рендеринга для шаблона, а другой для лэйаута с помощью опции `:layout_engine`:
366
+
367
+ get '/' do
368
+ markdown :index, :layout_engine => :erb
369
+ end
370
+
371
+ Отрисует <tt>./views/index.md</tt> с <tt>./views/layout.erb</tt> в качестве
372
+ лэйаута.
373
+
374
+ Также вы можете задать такие опции рендеринга глобально:
375
+
376
+ set :markdown, :layout_engine => :haml, :layout => :post
377
+
378
+ get '/' do
379
+ markdown :index
380
+ end
381
+
382
+ Отрисует <tt>./views/index.md</tt> (и любой другой шаблон на Markdown) с
383
+ <tt>./views/post.haml</tt> в качестве лэйаута.
384
+
348
385
  Также возможно обрабатывать Markdown с помощью BlueCloth, а не RDiscount:
349
386
 
350
387
  require 'bluecloth'
@@ -361,9 +398,9 @@ rdiscount gem/библиотека необходима для рендерин
361
398
 
362
399
  === Textile шаблоны
363
400
 
364
- RedCloth gem/библиотека необходима для рендеринга Textile шаблонов:
401
+ <tt>RedCloth</tt> gem/библиотека необходима для рендеринга Textile шаблонов:
365
402
 
366
- ## Вам нужно будет подключить redcloth в приложении
403
+ # Вам нужно будет подключить redcloth в приложении
367
404
  require "redcloth"
368
405
 
369
406
  get '/' do
@@ -372,22 +409,44 @@ RedCloth gem/библиотека необходима для рендеринг
372
409
 
373
410
  Отрисует <tt>./views/index.textile</tt>.
374
411
 
375
- В textile невозможно вызывать методы или передавать локальные переменные. Следовательно, вам скорее всего придется
376
- использовать этот шаблон совместно с другим движком рендеринга:
412
+ В Textile невозможно вызывать методы или передавать локальные переменные. Следовательно, вам, скорее всего,
413
+ придется использовать этот шаблон совместно с другим движком рендеринга:
377
414
 
378
415
  erb :overview, :locals => { :text => textile(:introduction) }
379
416
 
380
- Заметьте, что вы можете вызывать метод textile из других шаблонов:
417
+ Заметьте, что вы можете вызывать метод +textile+ из других шаблонов:
381
418
 
382
419
  %h1 Hello From Haml!
383
420
  %p= textile(:greetings)
384
421
 
422
+ Вы не можете вызывать Ruby из Textile, соответственно, вы не можете использовать
423
+ лэйаут-шаблоны на Textile. Тем не менее, есть возможность использовать один
424
+ движок рендеринга для шаблона, а другой для лэйаута с помощью опции `:layout_engine`:
425
+
426
+ get '/' do
427
+ textile :index, :layout_engine => :erb
428
+ end
429
+
430
+ Отрисует <tt>./views/index.textile</tt> с <tt>./views/layout.erb</tt> в качестве
431
+ лэйаута.
432
+
433
+ Также вы можете задать такие опции рендеринга глобально:
434
+
435
+ set :textile, :layout_engine => :haml, :layout => :post
436
+
437
+ get '/' do
438
+ textile :index
439
+ end
440
+
441
+ Отрисует <tt>./views/index.textile</tt> (и любой другой шаблон на Textile) с
442
+ <tt>./views/post.haml</tt> в качестве лэйаута.
443
+
385
444
  === RDoc шаблоны
386
445
 
387
- RDoc gem/библиотека необходима для рендеринга RDoc шаблонов:
446
+ <tt>rdoc</tt> gem/библиотека необходима для рендеринга RDoc шаблонов:
388
447
 
389
- ## Вам нужно будет подключить rdoc в приложении
390
- require "rdoc"
448
+ # Вам нужно будет подключить rdoc/markup/to_html в приложении
449
+ require "rdoc/markup/to_html"
391
450
 
392
451
  get '/' do
393
452
  rdoc :index
@@ -395,21 +454,43 @@ RDoc gem/библиотека необходима для рендеринга R
395
454
 
396
455
  Отрисует <tt>./views/index.rdoc</tt>.
397
456
 
398
- В rdoc невозможно вызывать методы или передавать локальные переменные. Следовательно, вам скорее всего придется
399
- использовать этот шаблон совместно с другим движком рендеринга:
457
+ В RDoc невозможно вызывать методы или передавать локальные переменные. Следовательно, вам, скорее всего,
458
+ придется использовать этот шаблон совместно с другим движком рендеринга:
400
459
 
401
460
  erb :overview, :locals => { :text => rdoc(:introduction) }
402
461
 
403
- Заметьте, что вы можете вызывать метод rdoc из других шаблонов:
462
+ Заметьте, что вы можете вызывать метод +rdoc+ из других шаблонов:
404
463
 
405
464
  %h1 Hello From Haml!
406
465
  %p= rdoc(:greetings)
407
466
 
467
+ Вы не можете вызывать Ruby из RDoc, соответственно, вы не можете использовать
468
+ лэйаут-шаблоны на RDoc. Тем не менее, есть возможность использовать один
469
+ движок рендеринга для шаблона, а другой для лэйаута с помощью опции `:layout_engine`:
470
+
471
+ get '/' do
472
+ rdoc :index, :layout_engine => :erb
473
+ end
474
+
475
+ Отрисует <tt>./views/index.rdoc</tt> с <tt>./views/layout.erb</tt> в качестве
476
+ лэйаута.
477
+
478
+ Также вы можете задать такие опции рендеринга глобально:
479
+
480
+ set :rdoc, :layout_engine => :haml, :layout => :post
481
+
482
+ get '/' do
483
+ rdoc :index
484
+ end
485
+
486
+ Отрисует <tt>./views/index.rdoc</tt> (и любой другой шаблон на RDoc) с
487
+ <tt>./views/post.haml</tt> в качестве лэйаута.
488
+
408
489
  === Radius шаблоны
409
490
 
410
- radius gem/библиотека необходима для рендеринга Radius шаблонов:
491
+ <tt>radius</tt> gem/библиотека необходима для рендеринга Radius шаблонов:
411
492
 
412
- ## Вам нужно будет подключить radius в приложении
493
+ # Вам нужно будет подключить radius в приложении
413
494
  require 'radius'
414
495
 
415
496
  get '/' do
@@ -425,9 +506,9 @@ radius gem/библиотека необходима для рендеринга
425
506
 
426
507
  === Markaby шаблоны
427
508
 
428
- markaby gem/библиотека необходима для рендеринга Markaby шаблонов:
509
+ <tt>markaby</tt> gem/библиотека необходима для рендеринга Markaby шаблонов:
429
510
 
430
- ## Вам нужно будет подключить markaby в приложении
511
+ # Вам нужно будет подключить markaby в приложении
431
512
  require 'markaby'
432
513
 
433
514
  get '/' do
@@ -436,11 +517,39 @@ markaby gem/библиотека необходима для рендеринг
436
517
 
437
518
  Отрисует <tt>./views/index.mab</tt>.
438
519
 
520
+ Вы также можете использовать внутристроковые Markaby шаблоны:
521
+
522
+ get '/' do
523
+ markaby { h1 "Welcome!" }
524
+ end
525
+
526
+ === Slim шаблоны
527
+
528
+ <tt>slim</tt> gem/библиотека необходима для рендеринга slim шаблонов:
529
+
530
+ # Вам нужно будет подключить slim в приложении
531
+ require 'slim'
532
+
533
+ get '/' do
534
+ slim :index
535
+ end
536
+
537
+ Отрисует <tt>./views/index.slim</tt>.
538
+
439
539
  === CoffeeScript шаблоны
440
540
 
441
- coffee-script gem/библиотека и `coffee` бинарный файл необходимы для рендеринга CoffeeScript шаблонов:
541
+ Вам понадобится <tt>coffee-script</tt> gem/библиотека и что-то <b>одно</b> из следующего списка,
542
+ чтобы запускать JavaScript:
543
+
544
+ * +node+ (из Node.js)
545
+ * вы можете использовать OSX (есть встроенные средства для выполнения JavaScript)
546
+ * +therubyracer+ gem/библиотека
442
547
 
443
- ## Вам нужно будет подключить coffee-script в приложении
548
+ Подробнее смотрите на {странице проекта}[http://github.com/josh/ruby-coffee-script].
549
+
550
+ Таким образом вы можете использовать CoffeeScript шаблоны.
551
+
552
+ # Вам нужно будет подключить coffee-script в приложении
444
553
  require 'coffee-script'
445
554
 
446
555
  get '/application.js' do
@@ -459,8 +568,8 @@ coffee-script gem/библиотека и `coffee` бинарный файл н
459
568
 
460
569
  === Доступ к переменным в шаблонах
461
570
 
462
- Шаблоны интерпретируются в том же контексте, что и обработчики маршрутов. Переменные экзмепляра,
463
- установленные в процесе обработки маршрутов, будут доступны напрямую в шаблонах:
571
+ Шаблоны интерпретируются в том же контексте, что и обработчики маршрутов. Переменные экземпляра,
572
+ установленные в процессе обработки маршрутов, будут доступны напрямую в шаблонах:
464
573
 
465
574
  get '/:id' do
466
575
  @foo = Foo.find(params[:id])
@@ -474,7 +583,7 @@ coffee-script gem/библиотека и `coffee` бинарный файл н
474
583
  haml '%h1= foo.name', :locals => { :foo => foo }
475
584
  end
476
585
 
477
- Это обычно используется когда шаблоны рендерятся как частные (partials) из других шаблонов.
586
+ Это обычный подход, когда шаблоны рендерятся как частные (partials) из других шаблонов.
478
587
 
479
588
  === Вложенные шаблоны
480
589
 
@@ -495,7 +604,7 @@ coffee-script gem/библиотека и `coffee` бинарный файл н
495
604
  @@ index
496
605
  %div.title Hello world!!!!!
497
606
 
498
- Заметьте: Вложенные шаблоны, определенные в файле-исходнике, который подключил sinatra, будут
607
+ Заметьте: Вложенные шаблоны, определенные в файле-исходнике, который подключил Sinatra, будут
499
608
  автоматически загружены. Вызовите <tt>enable :inline_templates</tt> напрямую, если у вас вложенные
500
609
  шаблоны в других файлах.
501
610
 
@@ -516,17 +625,42 @@ coffee-script gem/библиотека и `coffee` бинарный файл н
516
625
  end
517
626
 
518
627
  Если шаблон с именем "layout" существует, то он будет использован каждый раз,
519
- когда шаблоны будут отрисовываться. Вы можете отключать layout-шаблон в каждом конкретном случае с помощью
628
+ когда шаблоны будут отрисовываться. Вы можете отключать лэйаут в каждом конкретном случае с помощью
520
629
  <tt>:layout => false</tt> или отключить его для всего приложения, например, так: <tt>set :haml, :layout => false</tt>.
521
630
 
522
631
  get '/' do
523
632
  haml :index, :layout => !request.xhr?
524
633
  end
525
634
 
526
- == Методы помощники
635
+ === Привязка файловых расширений
636
+
637
+ Чтобы связать расширение файла и движок рендеринга, используйте
638
+ <tt>Tilt.register</tt>. Например, если вы хотите использовать расширение +tt+
639
+ для шаблонов Textile:
640
+
641
+ Tilt.register :tt, Tilt[:textile]
642
+
643
+ === Добавление собственного движка рендеринга
644
+
645
+ Сначала зарегистрируйте свой движок в Tilt, затем создайте метод, отвечающий за отрисовку:
646
+
647
+ Tilt.register :myat, MyAwesomeTemplateEngine
648
+
649
+ helpers do
650
+ def myat(*args) render(:myat, *args) end
651
+ end
652
+
653
+ get '/' do
654
+ myat :index
655
+ end
527
656
 
528
- Используйте <tt>helpers</tt> метод для определения методов помощников для дальнейшего
529
- использования в обработчиках маршрутов и шаблонах:
657
+ Отрисует <tt>./views/index.myat</tt>. Чтобы узнать больше о Tilt,
658
+ смотрите https://github.com/rtomayko/tilt
659
+
660
+ == Методы-помощники
661
+
662
+ Используйте метод <tt>helpers</tt>, чтобы определить методы-помощники, которые
663
+ в дальнейшем можно будет использовать в обработчиках маршрутов и шаблонах:
530
664
 
531
665
  helpers do
532
666
  def bar(name)
@@ -570,6 +704,16 @@ After-фильтры выполняются после каждого запро
570
704
  session[:last_slug] = slug
571
705
  end
572
706
 
707
+ Как и маршруты, фильтры могут использовать условия:
708
+
709
+ before :agent => /Songbird/ do
710
+ # ...
711
+ end
712
+
713
+ after '/blog/*', :host_name => 'example.com' do
714
+ # ...
715
+ end
716
+
573
717
  == Прерывание
574
718
 
575
719
  Чтобы незамедлительно прервать обработку запроса внутри фильтра или маршрута, используйте:
@@ -623,23 +767,23 @@ After-фильтры выполняются после каждого запро
623
767
  request.request_method # "GET"
624
768
  request.query_string # ""
625
769
  request.content_length # длина тела запроса
626
- request.media_type # медиа тип тела запроса
770
+ request.media_type # медиатип тела запроса
627
771
  request.host # "example.com"
628
- request.get? # true (для других участвующих HTTP глаголов есть похожие методы)
772
+ request.get? # true (есть аналоги для других методов HTTP)
629
773
  request.form_data? # false
630
- request["SOME_HEADER"] # значение SOME_HEADER заголовка
774
+ request["SOME_HEADER"] # значение заголовка SOME_HEADER
631
775
  request.referer # источник запроса клиента либо '/'
632
776
  request.user_agent # user agent (используется для :agent условия)
633
- request.cookies # хеш куки браузера
777
+ request.cookies # хеш с куками браузера
634
778
  request.xhr? # является ли запрос ajax запросом?
635
779
  request.url # "http://example.com/example/foo"
636
780
  request.path # "/example/foo"
637
- request.ip # IP адрес клиента
781
+ request.ip # IP-адрес клиента
638
782
  request.secure? # false
639
- request.env # env хеш как получено Rack
783
+ request.env # "сырой" env хеш, полученный Rack
640
784
  end
641
785
 
642
- Некоторые опции, такие как <tt>script_name</tt> или <tt>path_info</tt> могут быть переписаны:
786
+ Некоторые опции, такие как <tt>script_name</tt> или <tt>path_info</tt> доступны для записи:
643
787
 
644
788
  before { request.path_info = "/" }
645
789
 
@@ -681,7 +825,7 @@ After-фильтры выполняются после каждого запро
681
825
  Обработчики ошибок исполняются в том же контексте, что и маршруты, before-фильтры, а это означает, что всякие
682
826
  прелести вроде <tt>haml</tt>, <tt>erb</tt>, <tt>halt</tt> и т.д. доступны и им.
683
827
 
684
- ===  NotFound
828
+ === NotFound
685
829
 
686
830
  Когда возбуждено исключение <tt>Sinatra::NotFound</tt>, или кодом ответа является 404,
687
831
  то будет вызван <tt>not_found</tt> обработчик:
@@ -734,9 +878,9 @@ After-фильтры выполняются после каждого запро
734
878
  Sinatra устанавливает специальные <tt>not_found</tt> и <tt>error</tt> обработчики, когда запущена в режиме
735
879
  разработки (окружение <tt>:development</tt>).
736
880
 
737
- == Mime типы
881
+ == Mime-типы
738
882
 
739
- Когда вы используете <tt>send_file</tt> или статические файлы, у вас могут быть mime типы, которые Sinatra
883
+ Когда вы используете <tt>send_file</tt> или статические файлы, у вас могут быть mime-типы, которые Sinatra
740
884
  не понимает по умолчанию. Используйте +mime_type+ для их регистрации по расширению файла:
741
885
 
742
886
  mime_type :foo, 'text/foo'
@@ -811,8 +955,8 @@ Rack распространяется с различными стандартн
811
955
  end
812
956
  end
813
957
 
814
- Заметьте: Встроенные модули Sinatra::Test и Sinatra::TestHarness являются
815
- устаревшими, начиная с 0.9.2 релиза.
958
+ Обратите внимание: Встроенные модуль Sinatra::Test и класс Sinatra::TestHarness являются
959
+ устаревшими, начиная с релиза 0.9.2.
816
960
 
817
961
  == Sinatra::Base — "прослойки", библиотеки и модульные приложения
818
962
 
@@ -1005,7 +1149,7 @@ Sinatra::Application, иначе это будет сабкласс, котор
1005
1149
 
1006
1150
  У вас будет область видимости запроса внутри:
1007
1151
 
1008
- * get/head/post/put/delete блоков
1152
+ * get/head/post/put/delete/options блоков
1009
1153
  * before/after фильтрах
1010
1154
  * методах помощниках
1011
1155
  * шаблонах/видах
@@ -1046,31 +1190,69 @@ Sinatra приложения могут быть запущены напряму
1046
1190
 
1047
1191
  == На острие
1048
1192
 
1049
- Если вы хотите использовать новейший код Sinatra, то создайте локальный
1050
- клон и запускайте свое приложение с <tt>sinatra/lib</tt> директорией
1051
- в <tt>LOAD_PATH</tt>:
1193
+ Если вы хотите использовать самый последний код Sinatra, не бойтесь запускать
1194
+ свое приложение вместе с master бранчем Sinatra, он весьма стабилен.
1195
+
1196
+ Мы также время от времени выпускаем предварительные версии, так что вы можете делать так:
1197
+
1198
+ gem install sinatra --pre
1199
+
1200
+ Чтобы воспользоваться некоторыми самыми последними возможностям.
1201
+
1202
+ === С помощью Bundler
1203
+
1204
+ Если вы хотите запускать свое приложение с последней версией Sinatra, то
1205
+ рекомендуем использовать {Bundler}[http://gembundler.com/].
1206
+
1207
+ Сначала установите Bundler, если у вас его еще нет:
1208
+
1209
+ gem install bundler
1210
+
1211
+ Затем создайте файл +Gemfile+ в директории вашего проекта:
1212
+
1213
+ source :rubygems
1214
+ gem 'sinatra', :git => "git://github.com/sinatra/sinatra.git"
1215
+
1216
+ # другие зависимости
1217
+ gem 'haml' # например, если используете haml
1218
+ gem 'activerecord', '~> 3.0' # может быть, вам нужен и ActiveRecord 3.x
1219
+
1220
+ Обратите внимание, вам нужно будет указывать все зависимости вашего приложения
1221
+ в этом файле. Однако, непосредственные зависимости Sinatra (Rack и Tilt) Bundler
1222
+ автоматически скачает и добавит.
1223
+
1224
+ Теперь вы можете запускать свое приложение примерно так:
1225
+
1226
+ bundle exec ruby myapp.rb
1227
+
1228
+ === Вручную
1229
+
1230
+ Создайте локальный клон репозитория и запускайте свое приложение с <tt>sinatra/lib</tt>
1231
+ директорией в <tt>LOAD_PATH</tt>:
1052
1232
 
1053
1233
  cd myapp
1054
1234
  git clone git://github.com/sinatra/sinatra.git
1055
1235
  ruby -Isinatra/lib myapp.rb
1056
1236
 
1057
- Также вы можете добавить <tt>sinatra/lib</tt> директорию в
1058
- <tt>LOAD_PATH</tt> приложения:
1237
+ Чтобы обновить исходники Sinatra:
1059
1238
 
1060
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib'
1061
- require 'rubygems'
1062
- require 'sinatra'
1239
+ cd myapp/sinatra
1240
+ git pull
1063
1241
 
1064
- get '/about' do
1065
- "I'm running version " + Sinatra::VERSION
1066
- end
1242
+ === Установка глобально
1067
1243
 
1068
- Чтобы обновить исходники Sinatra:
1244
+ Вы можете самостоятельно собрать gem:
1069
1245
 
1070
- cd myproject/sinatra
1071
- git pull
1246
+ git clone git://github.com/sinatra/sinatra.git
1247
+ cd sinatra
1248
+ rake sinatra.gemspec
1249
+ rake install
1250
+
1251
+ Если вы устанавливаете пакеты (gem) от пользователя root, то вашим последним шагом должна быть команда
1252
+
1253
+ sudo rake install
1072
1254
 
1073
- == Больше информации
1255
+ == Дальнейшее чтение
1074
1256
 
1075
1257
  * {Вебсайт проекта}[http://www.sinatrarb.com/] - Дополнительная документация,
1076
1258
  новости и ссылки на другие ресурсы.