|
15 | 15 |
|
16 | 16 | ## Гем
|
17 | 17 |
|
18 |
| -Each gem has a name, version, and platform |
| 18 | +Each gem has a name, version |
19 | 19 |
|
20 | 20 | ## Составляющие
|
21 | 21 |
|
22 | 22 | * Code (including tests and supporting utilities)
|
| 23 | +* extconf |
23 | 24 | * Documentation
|
24 | 25 | * gemspec
|
25 | 26 |
|
| 27 | +## Плюсы гемов в отличии от C библиотек |
| 28 | + |
| 29 | +* Читаемость |
| 30 | +* Простота дополнения |
| 31 | + |
| 32 | +## Как установить гем и где он окажется |
| 33 | + |
| 34 | +Установить гем просто: `gem install colorize` |
| 35 | + |
| 36 | +Его местонахождение определяется тем, какую систему контроля гемов вы используете. |
| 37 | +Рассмотрим rvm. Гемы окажутся в `~/.rvm/gems/ruby-2.1.5@my-gemset`. |
| 38 | + |
| 39 | +Установка гема просто подразумевает под собой сохранение определенной версии гема. |
| 40 | + |
| 41 | + |
| 42 | +## Именование |
| 43 | + |
| 44 | +* fancy_require => require 'fancy_require' |
| 45 | +* net-http-persistent => require 'net/http/persistent' |
| 46 | +* net-http-digest_auth => require 'net/http/digest_auth' |
| 47 | +* Don’t use UPPERCASE letters |
| 48 | + |
| 49 | +## Версионирование |
| 50 | +``` |
| 51 | +PATCH 0.0.x level changes for implementation level detail changes, such as small bug fixes |
| 52 | +MINOR 0.x.0 level changes for any backwards compatible API changes, such as new functionality/features |
| 53 | +MAJOR x.0.0 level changes for backwards incompatible API changes, such as changes that will break existing users code if they update |
| 54 | +``` |
| 55 | + |
| 56 | +Для просмотра документации конкретной версии не забываем включать верную версию на гитхабе. |
| 57 | + |
26 | 58 | ## Структура
|
27 | 59 |
|
28 | 60 | ```
|
|
67 | 99 | 4. `gem install ./my_gem.gem`
|
68 | 100 | 5. `gem push hola-0.0.0.gem`
|
69 | 101 |
|
70 |
| -## Именование |
71 |
| - |
72 |
| -* fancy_require => require 'fancy_require' |
73 |
| -* net-http-persistent => require 'net/http/persistent' |
74 |
| -* net-http-digest_auth => require 'net/http/digest_auth' |
75 |
| -* Don’t use UPPERCASE letters |
76 |
| - |
77 |
| -## Версионирование |
78 |
| -``` |
79 |
| -PATCH 0.0.x level changes for implementation level detail changes, such as small bug fixes |
80 |
| -MINOR 0.x.0 level changes for any backwards compatible API changes, such as new functionality/features |
81 |
| -MAJOR x.0.0 level changes for backwards incompatible API changes, such as changes that will break existing users code if they update |
82 |
| -``` |
83 | 102 |
|
84 | 103 | ## Gemfile & bundler
|
85 | 104 |
|
@@ -250,6 +269,14 @@ DEPENDENCIES
|
250 | 269 |
|
251 | 270 | ```
|
252 | 271 |
|
| 272 | +## rubygems-bundler |
| 273 | + |
| 274 | +Позволяет не писать bundle exec для каждой команды. Дело в том, что rubygems-bundler интегрирует функционал bundler-a в rubygems и заставляет ruby по дефолту запускать нужные версии гемов. |
| 275 | + |
| 276 | +## RubyGems >= 2.2.0 |
| 277 | + |
| 278 | +В rubygems версии 2.2.0 и выше этот функционал включен по дефолту и гем rubygems-bundler уже не требуется. Используя переменную `RUBYGEMS_GEMDEPS` можно добиться того же результата что и с гемом `bundler`. Но в версии 2.2.0 не весь синтаксис Gemfile поддерживается, поэтому я бы побоялся переходить с бандлера на рубигемс прямо сейчас. |
| 279 | + |
253 | 280 | ---
|
254 | 281 | # Домашнее задание
|
255 | 282 | Создать гем, который будет monkeypatch'ить объекты Time в руби и добавит функционал http://www.ruby-doc.org/core-2.1.4/Time.html#method-i-strftime
|
|
0 commit comments