dep 1.0.0.rc1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/README +60 -2
  2. metadata +9 -9
data/README CHANGED
@@ -16,10 +16,10 @@ DESCRIPTION
16
16
  add
17
17
  Fetches the latest version of the library in question
18
18
  and automatically adds it to your .gems file.
19
-
19
+
20
20
  rm
21
21
  Simply removes the corresponding entry in your .gems file.
22
-
22
+
23
23
  install
24
24
  Installs all the missing dependencies for you. An important
25
25
  point here is that it simply does a `gem install` for each
@@ -29,3 +29,61 @@ DESCRIPTION
29
29
 
30
30
  INSTALLATION
31
31
  $ gem install dep
32
+
33
+ HISTORY
34
+ dep is actually more of a workflow than a tool. If you think about
35
+ package managers and the problem of dependencies, you can summarize
36
+ what you absolutely need from them in just two points:
37
+
38
+ 1. When you build an application which relies on 3rd party libraries,
39
+ it's best to explicitly declare the version numbers of these
40
+ libraries.
41
+
42
+ 2. You can either bundle the specific library version together with
43
+ your application, or you can have a list of versions.
44
+
45
+ The first approach is handled by vendoring the library. The second
46
+ approach typically is done using Bundler. But why do you need such
47
+ a complicated tool when all you need is simply listing version numbers?
48
+
49
+ We dissected what we were doing and eventually reached the following
50
+ workflow:
51
+
52
+ 1. We maintain a .gems file for every application which lists the
53
+ libraries and the version numbers.
54
+ 2. We omit dependencies of dependencies in that file, the reason being
55
+ is that that should already be handled by the package manager
56
+ (typically rubygems).
57
+ 3. Whenever we add a new library, we add the latest version.
58
+ 4. When we pull the latest changes, we want to be able to rapidly
59
+ check if the dependencies we have is up to date and matches what
60
+ we just pulled.
61
+
62
+ So after doing this workflow manually for a while, we decided to
63
+ build the simplest tool to aid us with our workflow.
64
+
65
+ The first point is handled implicitly by dep. You can also specify
66
+ a different file by doing dep -f.
67
+
68
+ The second point is more of an implementation detail. We thought about
69
+ doing dependencies, but then, why re-implement something that's already
70
+ done for you by rubygems?
71
+
72
+ The third point (and also the one which is most inconvenient), is
73
+ handled by dep add.
74
+
75
+ The manual workflow for that would be:
76
+
77
+ gem search -r "^ohm$" [--pre] # check and remember the version number
78
+ echo "ohm -v X.x.x" >> .gems
79
+
80
+ If you try doing that repeatedly, it will quickly become cumbersome.
81
+
82
+ The fourth and final point is handled by typing dep check or simply dep.
83
+ Practically speaking it's just:
84
+
85
+ git pull
86
+ dep
87
+
88
+ And that's it. The dep command typcially happens in 0.2 seconds which
89
+ is something we LOVE.
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
5
- prerelease: 6
4
+ version: 1.0.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Cyril David
@@ -10,19 +10,19 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-15 00:00:00.000000000 Z
13
+ date: 2012-03-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: clap
17
- requirement: &70356266254260 !ruby/object:Gem::Requirement
17
+ requirement: &70327220901300 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
22
+ version: 0.0.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70356266254260
25
+ version_requirements: *70327220901300
26
26
  description: Specify your project's dependencies in one file.
27
27
  email:
28
28
  - cyx.ucron@gmail.com
@@ -51,9 +51,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
- - - ! '>'
54
+ - - ! '>='
55
55
  - !ruby/object:Gem::Version
56
- version: 1.3.1
56
+ version: '0'
57
57
  requirements: []
58
58
  rubyforge_project:
59
59
  rubygems_version: 1.8.11