kiq 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -13
- data/lib/kiq/helpers/version.rb +1 -1
- data/lib/kiq/project.rb +0 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75fe72b618549a0e9e65a7608a6a9c128e37e016
|
4
|
+
data.tar.gz: 57677153f53bbf46d1832c64e5b6467c816a8c1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 743b43c87d6d1767182a4c2d1e087dc17f95c83bc8dd751f57e93d31d86ff251130463c9ada7a83fd2abc213d447c2201394eec6bdcaadc12f75061626e20e47
|
7
|
+
data.tar.gz: 9d0eb94792df0c44a449ce728d7102c28c0cb9fb6fb97ca517f59b7006cd0511f14ab1fd4da09ae890d22e0c19fc9baed9672cf623ca27e9c60f89a3667a6760
|
data/README.md
CHANGED
@@ -3,21 +3,23 @@ Kiq [![Build Status](https://travis-ci.org/loganmeetsworld/kiq.svg?branch=master
|
|
3
3
|
=========
|
4
4
|
|
5
5
|
## Summary
|
6
|
-
|
6
|
+
Kiq is a crowd funding application that can be run from your command line. This project was a learning experience. Key learning points for me were:
|
7
7
|
* Building a Ruby gem.
|
8
8
|
* Struggling with deciding if I should use other gems and build in dependencies.
|
9
9
|
* Testing Ruby and making code more modular.
|
10
|
-
* Getting over my Rails addiction
|
10
|
+
* Getting over my Rails addiction.
|
11
11
|
|
12
12
|
## Installation
|
13
|
-
This is a Ruby Gem
|
13
|
+
This is a Ruby Gem! It can be found on the rubygems site [here](https://rubygems.org/gems/kiq) and easily implemented on any operating system that has Ruby installed with the command `gem install kiq`.
|
14
14
|
|
15
|
-
I tested this gem out on OSX El Capitan, Yosemite, Microsoft 10, and Linux. Just make sure you have [https://www.ruby-lang.org/en/documentation/installation/](Ruby installed on your OS). RubyGems comes with a Ruby installation.
|
15
|
+
I tested this gem out on OSX El Capitan, OSX Yosemite, Microsoft 10, and Linux. Just make sure you have [https://www.ruby-lang.org/en/documentation/installation/](Ruby installed on your OS). RubyGems comes with a Ruby installation.
|
16
16
|
|
17
|
-
This gem uses serialization to store the projects in a `.kiq` yml file. If you don't want this file in whatever folder you are currently in, I would suggest creating a new folder to use the gem:
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
This gem uses serialization to store the projects in a `.kiq` yml file. If you don't want this file in whatever folder you are currently in, I would suggest creating a new folder to use the gem:
|
18
|
+
```
|
19
|
+
cd projects
|
20
|
+
mkdir kiq
|
21
|
+
gem install kiq
|
22
|
+
```
|
21
23
|
And then you're off! If you ever want to remove the `.kiq` yaml file, delete it from the folder with:
|
22
24
|
`rm .kiq`
|
23
25
|
|
@@ -58,16 +60,22 @@ Backed Awesome_Sauce for $50 dollars.
|
|
58
60
|
```
|
59
61
|
|
60
62
|
## Technology/Dependencies
|
61
|
-
### Let's talk about assumptions
|
62
|
-
* I want to recognize that I made a couple of assumptions in this process. The first assumption was that a user downloading the gem was using a Mac.
|
63
63
|
|
64
64
|
### Why ruby, why a gem (and the downsides to those choices)
|
65
|
-
|
65
|
+
* I chose Ruby because I'm the most familiar with it. If I were doing a longer form of this project I may try to build it in Go for better performance. However, for the scope of this project Ruby worked well.
|
66
|
+
* I was also interested in Ruby because I thought a gem would work well. I had never build a gem before so it was a fun challenge to tackle.
|
67
|
+
* I spent most of the planning for this project thinking about whether I should use a gem like [GLI](https://github.com/davetron5000/gli), or build out the whole app myself. I ended up choosing to go without a dependency on another package. I thought deeply about this. Probably too deeply. I weighed ["Not Built Here" Syndrome](http://www.richard-banks.org/2007/07/built-here-syndrome.html) with having to rely on how another person packaged up the CLI app. I ended up siding with less dependencies. I took some tips from the UI in a couple apps, and built out the rest of it myself, which worked well. I watched [Dave Copeland's talk on CLI apps](https://www.youtube.com/watch?v=eYk2Otz4X4I) and while I like Methadone and GLI, I don't particularly like Cucumber, which the built in dependency on Aruba was heavily trying to get me to use. If I were building a bigger project, however, and needed a more stream lined UI, it looks like GLI, Methadone, Highline, and Main are all great gems to use for it.
|
68
|
+
|
69
|
+
## Architecture Choices
|
66
70
|
### Serialization For Storage
|
71
|
+
I used serialization with a yaml file for storage and made it human-readbale. This helped me not only organize the data but visualize it as it updated. If this project were bigger and had more objects I would want to use a relational database. However, with just two models, Projects and Backers, a hash to handle the Backers worked out well. It also really helped to be able to read the collection of projects from the file.
|
72
|
+
|
67
73
|
### Hash Useage
|
74
|
+
I employed several hashes for O(1) access. Projects are stored as a hash with the name as the accessor. Backers are stored as a hash with the credit card as the accessor. I know projects weren't required to have unique names, but I built that into the app and it made it easier to assess if a project existed or not.
|
68
75
|
|
69
76
|
## To Do (if only there was more time)
|
70
|
-
|
77
|
+
I have a lot of remaining thoughts. A few things that I'd like to work on in the future:
|
71
78
|
* Make it look prettier, research UI gems like `highline` and `colorize` and look for ways to implement them.
|
72
79
|
* Refactor the specs. There's a lot of repetition there.
|
73
|
-
* Add specs for handling user input.
|
80
|
+
* Add more specs for handling user input.
|
81
|
+
* Anything! Incorporate an API! Make this an awesome app that you can text to add money to kickstarter campaigns. I was really excited working on this project.
|
data/lib/kiq/helpers/version.rb
CHANGED
data/lib/kiq/project.rb
CHANGED