couchup 0.0.7 → 0.0.8

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/TODO ADDED
@@ -0,0 +1,3 @@
1
+ Replication
2
+ Conflicts
3
+ Attachments
@@ -4,11 +4,11 @@ require 'irb'
4
4
  require 'irb/completion'
5
5
 
6
6
  if File.exists? ".irbrc"
7
- ENV['IRBRC'] = ".irbrc"
7
+ ENV['IRBRC'] = ".irbrc"
8
8
  end
9
9
 
10
10
  if File.exists?( File.expand_path(rcfile = "~/.couchuprc") )
11
- load(rcfile)
11
+ load(rcfile)
12
12
  end
13
13
 
14
14
  ARGV.clear
@@ -0,0 +1,12 @@
1
+ module Couchup
2
+ module Commands
3
+ class Compact
4
+ def run(*params)
5
+ Couchup.database.compact!
6
+ end
7
+ def self.describe
8
+ "Compacts the database. To preserve space"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,9 +2,36 @@ module Couchup
2
2
  module Commands
3
3
  class Create
4
4
  def run(*params)
5
- Couchup.server.database!(params.first)
6
- Use.new.run(params.first)
5
+ what = params.shift.to_s
6
+ if(what == 'view')
7
+ create_view(params.first)
8
+ else
9
+ Couchup.server.database!(params.first)
10
+ Use.new.run(params.first)
11
+ end
7
12
  end
13
+
14
+ def create_view(name)
15
+ raise "Please set your EDITOR env variable before using view" if ENV['EDITOR'].nil?
16
+ view = View.new(name)
17
+ file = Tempfile.new(name.gsub("/", "_"))
18
+ tmp_file_path = file.path
19
+ file.write("------BEGIN Map-------\n")
20
+ file.write(view.map) if view.map?
21
+ file.write("------END------\n\n")
22
+
23
+ file.write("------BEGIN Reduce(Remove the function if you don't want a reduce)-------\n")
24
+ file.write(view.reduce) if view.reduce?
25
+ file.write("------END------\n")
26
+ file.close
27
+
28
+ `#{ENV['EDITOR']} #{tmp_file_path}`
29
+ contents = File.open(tmp_file_path).read
30
+ ::Couchup::View.create(name, contents)
31
+ file.close
32
+ file.unlink
33
+ end
34
+
8
35
  def self.describe
9
36
  "Creates a new database and switches to the database"
10
37
  end
@@ -0,0 +1,14 @@
1
+ module Couchup
2
+ module Commands
3
+ class Drop
4
+ def run(*params)
5
+ db = params.first.nil? ? Couchup.server.database : Couchup.server.database(params.first)
6
+ db.delete!
7
+ end
8
+
9
+ def self.describe
10
+ "Drops a database. Use it with drop <dbname>"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -6,7 +6,7 @@ module Couchup
6
6
  end
7
7
 
8
8
  def self.describe
9
- "get [id] retuns the document with the id"
9
+ "get [id] retuns the document with the id. Just 'get' retrives all documents from the current database"
10
10
  end
11
11
  end
12
12
  end
@@ -5,7 +5,7 @@ module Couchup
5
5
  commands = param.nil? ? Commands.constants : [param.camelize]
6
6
  commands.each do |stuff|
7
7
  k = Commands.const_get(stuff)
8
- print stuff.downcase; print "\t\t"
8
+ print stuff.underscore; print "\t\t"
9
9
  puts k.respond_to?(:describe) ? k.describe : "No Help"
10
10
  end
11
11
  end
@@ -0,0 +1,18 @@
1
+ module Couchup
2
+ module Commands
3
+ class ReplicateTo
4
+ def run(*params)
5
+ dest = params.shift
6
+ option = params.shift
7
+ dest_db = (dest =~ /(http:\/\/.*)\/(.*)/) ? CouchRest::Database.new(CouchRest::Server.new($1), $2) : CouchRest::Database.new(Couchup.server, dest)
8
+ Couchup.database.replicate_to dest_db, (option.to_s == "continous")
9
+ end
10
+
11
+ def self.describe
12
+ "Allows replication to different databases. Try replicate_to 'http://foo.bar.com:5984/billing' :continous"
13
+ end
14
+
15
+ end
16
+ end
17
+
18
+ end
@@ -1,12 +1,12 @@
1
1
  module Couchup
2
2
  module Commands
3
3
  class Show
4
- def run(param)
5
- param = param.to_s
6
- if(param.blank? || param == 'databases' )
4
+ def run(*param)
5
+ option = param.first.to_s
6
+ if(option.blank? || option == 'databases' )
7
7
  puts Couchup.databases.inspect
8
8
  else
9
- puts Couchup.views.inspect
9
+ puts Couchup.views(param.second).inspect
10
10
  end
11
11
  end
12
12
 
@@ -2,9 +2,9 @@ module Couchup
2
2
  module Commands
3
3
  class Use
4
4
  def run(database)
5
-
6
- if Couchup.databases.include? database
7
- Couchup.database = database
5
+ db = database.to_s
6
+ if Couchup.databases.include? db
7
+ Couchup.database = db
8
8
  puts Couchup.database.info.inspect
9
9
  else
10
10
  puts "Database was not found"
@@ -18,7 +18,7 @@ module Couchup
18
18
  params = design.nil? ? {:startkey => '_design', :endkey => '_design0'} : {:key => "_design\\#{design}"}
19
19
  designs = database.documents(params.merge(:include_docs => true))["rows"]
20
20
  designs.collect do |d|
21
- d["doc"]["views"].keys
21
+ d["doc"]["views"].keys.collect{|view| "#{d['key'].gsub('_design/','')}/#{view}"}
22
22
  end.flatten
23
23
  end
24
24
 
@@ -1,7 +1,12 @@
1
1
  module Couchup
2
2
  class MapReduce
3
3
  def self.map(*params)
4
- view({}, *params)
4
+ #FIXME. should probably get view meta data to do one view call. but this is also doing 2 calls.
5
+ begin
6
+ view({}, *params)
7
+ rescue RestClient::BadRequest
8
+ view({:reduce => false}, *params)
9
+ end
5
10
  end
6
11
 
7
12
  def self.reduce(*params)
@@ -1,3 +1,3 @@
1
1
  module Couchup
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -0,0 +1,30 @@
1
+ module Couchup
2
+ class View
3
+
4
+ def initialize(name)
5
+ @design, @name = name.split "/"
6
+ design, name = name.split "/"
7
+ begin
8
+ doc = Couchup.database.get("_design/#{design}")
9
+ rescue
10
+ # handle creation of new design doc.
11
+ end
12
+ end
13
+
14
+ def self.create(name, file_contents)
15
+ v = doc["views"][name]
16
+ map, reduce = parse(file_contents)
17
+
18
+ puts "View Exists overwriting." unless v.nil?
19
+ v = (doc["views"][name]= {}) if v.nil?
20
+ v["map"] = map
21
+ v["reduce"] = reduce unless reduce.blank?
22
+ Couchup.database.save_doc(doc)
23
+ end
24
+
25
+ def self.parse(file_contents)
26
+ file_contents =~ /-+BEGIN Map-+(.*)^-+END-+.*BEGIN Reduce.*-+(.*)^-+END-*/m
27
+ [$1.strip, $2.strip]
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: couchup
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.7
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - V Sreekanth
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-24 00:00:00 +05:30
13
+ date: 2011-02-25 00:00:00 +05:30
14
14
  default_executable: ey
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -117,14 +117,18 @@ files:
117
117
  - Gemfile.lock
118
118
  - Rakefile
119
119
  - Readme.markdown
120
+ - TODO
120
121
  - bin/couchup
121
122
  - couchup.gemspec
122
123
  - lib/couchup.rb
124
+ - lib/couchup/commands/compact.rb
123
125
  - lib/couchup/commands/connect.rb
124
126
  - lib/couchup/commands/create.rb
127
+ - lib/couchup/commands/drop.rb
125
128
  - lib/couchup/commands/get.rb
126
129
  - lib/couchup/commands/help.rb
127
130
  - lib/couchup/commands/map.rb
131
+ - lib/couchup/commands/replicate_to.rb
128
132
  - lib/couchup/commands/restart.rb
129
133
  - lib/couchup/commands/show.rb
130
134
  - lib/couchup/commands/use.rb
@@ -135,6 +139,7 @@ files:
135
139
  - lib/couchup/extensions/symbol.rb
136
140
  - lib/couchup/mapreduce.rb
137
141
  - lib/couchup/version.rb
142
+ - lib/couchup/view.rb
138
143
  has_rdoc: true
139
144
  homepage: ""
140
145
  licenses: []