onemorecloud-websolr-rails 1.4.0 → 1.4.1

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/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 1.4.1
2
+ - Changed start to local:start, stop to local:stop
3
+ - Removed dependency on remote environment
1
4
  1.4.0
2
5
  - Added CHANGELOG
3
6
  - Added local development server
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.4.1
@@ -18,16 +18,18 @@ mkdir_p SOLR_PIDS_PATH
18
18
  mkdir_p SOLR_DATA_PATH
19
19
 
20
20
  class WebsolrController
21
- COMMANDS = %w[add list delete configure start stop]
21
+ COMMANDS = %w[add list delete configure local:start local:stop]
22
22
  SOLR_PORT = 8983
23
23
 
24
24
  def initialize(parser)
25
25
  @options = parser.options
26
26
  @command = @options.delete(:command)
27
27
  @parser = parser
28
- @user = @options[:user] || ENV["WEBSOLR_USER"]
29
- @pass = @options[:pass] || ENV["WEBSOLR_PWD"]
30
- @base = "http://#{URI::escape @user}:#{URI::escape @pass}@websolr.com"
28
+ @user = @options[:user] ||= ENV["WEBSOLR_USER"]
29
+ @pass = @options[:pass] ||= ENV["WEBSOLR_PWD"]
30
+ if @user && @pass
31
+ @base = "http://#{URI::escape @user}:#{URI::escape @pass}@websolr.com"
32
+ end
31
33
  end
32
34
 
33
35
  def die(s)
@@ -36,6 +38,16 @@ class WebsolrController
36
38
  end
37
39
 
38
40
  def required_options(hash)
41
+ hash = hash.dup
42
+ if hash.delete(:auth) && (!@user || !@pass)
43
+ die <<-STR
44
+
45
+ You need to specify your username and password, either on the command
46
+ line with the -u and -p flags, or in the WEBSOLR_USER and WEBSOLR_PWD
47
+ environment variables.
48
+
49
+ STR
50
+ end
39
51
  hash.inject(true) do |memo, (key, flag)|
40
52
  unless @options[key]
41
53
  STDERR.puts "Please use the #{flag} flag to specify the #{key}."
@@ -56,16 +68,37 @@ class WebsolrController
56
68
  die("I can't find config/environment.rb. Are we in a rails app?")
57
69
  end
58
70
 
59
- unless url = ENV["WEBSOLR_URL"]
60
- die("The WEBSOLR_URL environment variable is not set.\nHave you run websolr configure?")
71
+ unless ENV["WEBSOLR_URL"]
72
+ ENV["WEBSOLR_URL"] = "http://localhost:8983/solr"
73
+ puts <<-STR
74
+
75
+ You haven't configured your app. You might want to do that. I
76
+ assume you just want a quick development server, so I'll start
77
+ one up for you at http://localhost:8983/solr.
78
+
79
+ You should let Rails know about it by setting the WEBSOLR_URL, i.e:
80
+
81
+ > ./script/server WEBSOLR_URL=http://localhost:8983/solr
82
+
83
+ If you want to set up a full environment, run websolr configure.
84
+
85
+ STR
86
+ puts "Is this what you want? [yes]"
87
+ if STDIN.gets.strip =~/^(yes)?$/i
88
+ puts "Continuing...."
89
+ else
90
+ die "Aborted."
91
+ end
61
92
  end
62
- uri = URI.parse(url)
93
+
94
+
95
+ uri = URI.parse(ENV["WEBSOLR_URL"])
63
96
  @port = uri.port
64
97
  rescue URI::InvalidURIError => e
65
98
  die(e.message)
66
99
  end
67
100
 
68
- def cmd_start
101
+ def cmd_local_start
69
102
  check_local_solr_conditions
70
103
  begin
71
104
  n = Net::HTTP.new('127.0.0.1', @port)
@@ -86,7 +119,7 @@ class WebsolrController
86
119
  end
87
120
  end
88
121
 
89
- def cmd_stop
122
+ def cmd_local_stop
90
123
  ENV["RAILS_ENV"] = @options[:rails_env] || ENV["RAILS_ENV"] || "development"
91
124
  fork do
92
125
  file_path = "#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid"
@@ -105,13 +138,13 @@ class WebsolrController
105
138
  end
106
139
 
107
140
  def cmd_add
108
- required_options :name => "-n"
141
+ required_options :name => "-n", :auth => true
109
142
  doc = post "/slices.xml", {:slice => {:name => name}}
110
143
  puts "#{x doc, '//name'}\t#{x doc, '//base-url'}"
111
144
  end
112
145
 
113
146
  def cmd_delete
114
- required_options :name => "-n"
147
+ required_options :name => "-n", :auth => true
115
148
  delete "/slices/#{name}/destroy"
116
149
  puts "done"
117
150
  end
@@ -121,6 +154,7 @@ class WebsolrController
121
154
  end
122
155
 
123
156
  def cmd_list
157
+ required_options :auth => true
124
158
  doc = get "/slices.xml"
125
159
  REXML::XPath.each(doc, "//slice") do |node|
126
160
  puts "#{x node, 'name'}\t#{x node, 'base-url'}"
@@ -147,7 +181,7 @@ class WebsolrController
147
181
  end
148
182
 
149
183
  def cmd_configure
150
- required_options :name => "-n"
184
+ required_options :name => "-n", :auth => true
151
185
  doc = get "/slices.xml"
152
186
  found = false
153
187
  REXML::XPath.each(doc, "//slice") do |node|
@@ -163,7 +197,7 @@ case RAILS_ENV
163
197
  when 'production'
164
198
  ENV['WEBSOLR_URL'] ||= '#{x node, 'base-url'}'
165
199
  else
166
- ENV['WEBSOLR_URL'] ||= 'http://localhost:8983'
200
+ ENV['WEBSOLR_URL'] ||= 'http://localhost:8983/solr'
167
201
  end
168
202
  STR
169
203
  f.puts str
@@ -184,21 +218,10 @@ STR
184
218
  end
185
219
 
186
220
  def start
187
- if @user || @pass
188
- if(COMMANDS.include?(@command))
189
- send("cmd_#{@command}")
190
- else
191
- puts @parser
192
- exit(1)
193
- end
221
+ if(COMMANDS.include?(@command))
222
+ send("cmd_#{@command.gsub(/\W+/, '_')}")
194
223
  else
195
- puts <<-STR
196
-
197
- You need to specify your username and password, either on the command
198
- line with the -u and -p flags, or in the WEBSOLR_USER and WEBSOLR_PWD
199
- environment variables.
200
-
201
- STR
224
+ puts @parser
202
225
  exit(1)
203
226
  end
204
227
  end
@@ -7,13 +7,13 @@ class WebsolrOptionParser < OptionParser
7
7
  "Usage: #{$0} COMMAND [INDEX_NAME] [options]
8
8
 
9
9
  COMMANDs:
10
- start - starts the local development server
11
- stop - stops the local development server
10
+ local:start - starts the local development server
11
+ local:stop - stops the local development server
12
12
 
13
- add - creates a new index
14
- list - shows your indexes
15
- delete - deletes an index
16
- configure - adds websolr to your current Rails app
13
+ add - creates a new index
14
+ list - shows your indexes
15
+ delete - deletes an index
16
+ configure - adds websolr to your current Rails app
17
17
 
18
18
  "
19
19
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{websolr-rails}
8
- s.version = "1.4.0"
8
+ s.version = "1.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kyle Maxwell"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onemorecloud-websolr-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Maxwell