snails 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee6183d74fa011a7f2cc62352a468cfa5ad948a3
4
- data.tar.gz: bdff8341f0737d0b5889a9eaf34f8702cbb8b2ac
3
+ metadata.gz: daf351c2597c83b274ecc9a36cd7bd8558b96e0e
4
+ data.tar.gz: eaa66e198d7d3b20cad52442d8999fff954ed060
5
5
  SHA512:
6
- metadata.gz: 356d0950976977e63f2bdbd7e17c938299ba2fa4307ad167b88865a937589e4e68d73ee249479eb8999f70a59ad4d35dd25b6967276b9e251a7d8ca77472b5d7
7
- data.tar.gz: 414f2cad747f8733b480588ae7988f0a18c39d5e0bb5b9a7320324f4ead771a3501fd8aad8eb7369e94eb70eb512755812f307064498a6c9826c14e748ff1749
6
+ metadata.gz: 2bb1cc458d7d5120ebc098ff6641013e7fba9ff18ce57ca12e86269189b1a2b741f9f94362298a518d9cd1b81841d9ea38548730c625ecb763ea98641a76b4f9
7
+ data.tar.gz: 6082675242f0a8295e3a10a7f234f18b6a5d29e6274533985ea1e8cf09be38dd7aef653b2fa0e273bb82b187455ae3b91f46b543524529d9447aa0f631cb7432
data/lib/snails/mailer.rb CHANGED
@@ -1,10 +1,13 @@
1
1
  require 'erb'
2
2
  require 'tilt/erb'
3
3
  require 'tuktuk'
4
+ require 'snails'
4
5
 
5
6
  module Snails
6
7
 
7
8
  class Mailer
9
+ include Snails::SimpleFormat
10
+ Time.include(Snails::RelativeTime) unless Time.instance_methods.include?(:relative)
8
11
 
9
12
  @queue = :emails
10
13
 
@@ -33,6 +36,10 @@ module Snails
33
36
  end
34
37
  end
35
38
 
39
+ def helpers(&block)
40
+ instance_eval(&block)
41
+ end
42
+
36
43
  def perform(method, *args)
37
44
  send(method, *args)
38
45
  end
@@ -43,7 +50,7 @@ module Snails
43
50
  Resque.enqueue(self, method, obj.id, *args)
44
51
  end
45
52
 
46
- def send_error(to: @from_email, err:, env:, params: {}})
53
+ def send_error(to: @from_email, err:, env:, params: {})
47
54
  @exception, @env, @params = err, env, params
48
55
  @url = "#{env['REQUEST_METHOD']} #{env['REQUEST_URI']}"
49
56
 
@@ -88,22 +95,25 @@ A <%= @exception.class %> occurred in <%= @url %>:
88
95
  @logger ||= Logger.new(@logfile)
89
96
  end
90
97
 
91
- def send_email(to:, subject:, body:, from: nil, html: nil)
98
+ def send_email(from: nil, to:, subject:, body: nil, template: nil, html_body: nil, html_template: nil)
92
99
  raise "No recipient given for mail: #{subject}!" if to.blank?
93
100
 
94
101
  message = {
95
102
  to: to,
96
103
  from: from || @from_email,
97
- subject: @base_subject + subject,
98
- body: body.is_a?(Symbol) ? render(body) : body
104
+ subject: @base_subject + subject
99
105
  }
100
106
 
101
- if html
102
- message[:html_body] = html.is_a?(Symbol) ? render(html) : html
107
+ if body or template
108
+ message[:body] = template ? render(template) : body
109
+ end
110
+
111
+ if html_body or html_template
112
+ message[:html_body] = html_template ? render(html_template) : html_body
103
113
  end
104
114
 
105
- logger.info "[#{to}] Delivering: #{subject}"
106
- resp, email = Tuktuk.deliver(message) if Snails.env.production?
115
+ logger.info "[#{to}] Delivering: #{subject}" # debug
116
+ resp, email = Tuktuk.deliver(message, debug: !Snails.env.production?)
107
117
 
108
118
  if resp.is_a?(Tuktuk::Bounce)
109
119
  logger.info "[#{to}] Email bounced! [#{resp.code}] #{resp.message}"
data/lib/snails.rb CHANGED
@@ -279,80 +279,7 @@ module Snails
279
279
 
280
280
  end
281
281
 
282
- module ViewHelpers
283
-
284
- def self.included(base)
285
- Time.include(RelativeTime) unless Time.instance_methods.include?(:relative)
286
- end
287
-
288
- def action
289
- request.path_info.gsub('/','').blank? ? 'home' : request.path_info.gsub('/',' ')
290
- end
291
-
292
- def partial(name, opts = {})
293
- partial_name = name.to_s["/"] ? name.to_s.reverse.sub("/", "_/").reverse : "_#{name}"
294
- erb(partial_name.to_sym, { layout: false }.merge(opts))
295
- end
296
-
297
- def view(view_name, opts = {})
298
- layout = request.xhr? ? false : true
299
- erb(view_name.to_sym, { layout: layout }.merge(opts))
300
- end
301
-
302
- #########################################
303
- # pagination
304
-
305
- def get_page(counter)
306
- curr = params[:page].to_i
307
- i = (curr == 0 && counter == 1) ? 2
308
- : (curr == 2 && counter == -1) ? 0
309
- : curr + counter
310
- i == 0 ? "" : "/page/#{i}"
311
- end
312
-
313
- def show_pager(array, path)
314
- # remove page from path
315
- path = (env['SCRIPT_NAME'] + path.gsub(/[?|&|\/]page[=|\/]\d+/,''))
316
-
317
- prevlink = '<li>' + link_to("#{path}#{get_page(-1)}", '&larr; Prev').sub('//', '/') + '</li>'
318
- nextlink = array.count != Routes::PER_PAGE ? ""
319
- : '<li>' + link_to("#{path}#{get_page(1)}", 'Next &rarr;').sub('//', '/') + '</li>'
320
-
321
- str = params[:page] ? prevlink + nextlink : nextlink
322
- str != "" ? "<ul class='pager'>" + str + "</ul>" : ''
323
- end
324
-
325
- #########################################
326
- # formatting
327
-
328
- def tag(name, options = nil, open = false)
329
- attributes = tag_attributes(options)
330
- "<#{name}#{attributes}#{open ? '>' : ' />'}"
331
- end
332
-
333
- def tag_attributes(options)
334
- return '' unless options
335
- options.inject('') do |all,(key,value)|
336
- next all unless value
337
- all << ' ' if all.empty?
338
- all << %(#{key}="#{value}" )
339
- end.chomp!(' ')
340
- end
341
-
342
- def simple_format(text, options = {})
343
- t = options.delete(:tag) || :p
344
- start_tag = tag(t, options, true)
345
- text = text.to_s.dup
346
- text.gsub!(/\r\n?/, "\n") # \r\n and \r -> \n
347
- text.gsub!(/\n\n+/, "</#{t}>\n\n#{start_tag}") # 2+ newline -> paragraph
348
- text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
349
- text.insert 0, start_tag
350
- text << "</#{t}>"
351
- text
352
- end
353
-
354
- #########################################
355
- # forms
282
+ module FormHelpers
356
283
 
357
284
  def form_input(object, field, options = {})
358
285
  id, name, index, label = input_base(object, field, options)
@@ -455,6 +382,83 @@ module Snails
455
382
 
456
383
  end
457
384
 
385
+ module SimpleFormat
386
+
387
+ def tag(name, options = nil, open = false)
388
+ attributes = tag_attributes(options)
389
+ "<#{name}#{attributes}#{open ? '>' : ' />'}"
390
+ end
391
+
392
+ def tag_attributes(options)
393
+ return '' unless options
394
+ options.inject('') do |all,(key,value)|
395
+ next all unless value
396
+ all << ' ' if all.empty?
397
+ all << %(#{key}="#{value}" )
398
+ end.chomp!(' ')
399
+ end
400
+
401
+ def simple_format(text, options = {})
402
+ t = options.delete(:tag) || :p
403
+ start_tag = tag(t, options, true)
404
+ text = text.to_s.dup
405
+ text.gsub!(/\r\n?/, "\n") # \r\n and \r -> \n
406
+ text.gsub!(/\n\n+/, "</#{t}>\n\n#{start_tag}") # 2+ newline -> paragraph
407
+ text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
408
+ text.insert 0, start_tag
409
+ text << "</#{t}>"
410
+ text
411
+ end
412
+
413
+ end
414
+
415
+ module ViewHelpers
416
+
417
+ def self.included(base)
418
+ Time.include(RelativeTime) unless Time.instance_methods.include?(:relative)
419
+ base.include(FormHelpers)
420
+ base.include(SimpleFormat)
421
+ end
422
+
423
+ def action
424
+ request.path_info.gsub('/','').blank? ? 'home' : request.path_info.gsub('/',' ')
425
+ end
426
+
427
+ def partial(name, opts = {})
428
+ partial_name = name.to_s["/"] ? name.to_s.reverse.sub("/", "_/").reverse : "_#{name}"
429
+ erb(partial_name.to_sym, { layout: false }.merge(opts))
430
+ end
431
+
432
+ def view(view_name, opts = {})
433
+ layout = request.xhr? ? false : true
434
+ erb(view_name.to_sym, { layout: layout }.merge(opts))
435
+ end
436
+
437
+ #########################################
438
+ # pagination
439
+
440
+ def get_page(counter)
441
+ curr = params[:page].to_i
442
+ i = (curr == 0 && counter == 1) ? 2
443
+ : (curr == 2 && counter == -1) ? 0
444
+ : curr + counter
445
+ i == 0 ? "" : "/page/#{i}"
446
+ end
447
+
448
+ def show_pager(array, path)
449
+ # remove page from path
450
+ path = (env['SCRIPT_NAME'] + path.gsub(/[?|&|\/]page[=|\/]\d+/,''))
451
+
452
+ prevlink = '<li>' + link_to("#{path}#{get_page(-1)}", '&larr; Prev').sub('//', '/') + '</li>'
453
+ nextlink = array.count != Routes::PER_PAGE ? ""
454
+ : '<li>' + link_to("#{path}#{get_page(1)}", 'Next &rarr;').sub('//', '/') + '</li>'
455
+
456
+ str = params[:page] ? prevlink + nextlink : nextlink
457
+ str != "" ? "<ul class='pager'>" + str + "</ul>" : ''
458
+ end
459
+
460
+ end
461
+
458
462
  module RelativeTime
459
463
 
460
464
  def in_words
data/snails.gemspec CHANGED
@@ -3,13 +3,13 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "snails"
6
- s.version = '0.0.7'
6
+ s.version = '0.0.8'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Tomás Pollak']
9
9
  s.email = ['tomas@forkhq.com']
10
10
  # s.homepage = "https://github.com/tomas/snails"
11
- s.summary = "A simple-and-nimble version of Rails."
12
- s.description = "A simple-and-nimble version of Rails."
11
+ s.summary = "Ruby on Snails."
12
+ s.description = "Ruby on Snails."
13
13
 
14
14
  s.required_rubygems_version = ">= 1.3.6"
15
15
  s.add_development_dependency "bundler", ">= 1.0.0"
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency "sinatra-activerecord", ">= 2.0.13"
21
21
  s.add_runtime_dependency "sinatra-flash", ">= 0.3.0"
22
22
  s.add_runtime_dependency "sprockets-helpers", ">= 1.2"
23
+ s.add_runtime_dependency "tuktuk", ">= 0.6.0"
23
24
 
24
25
  s.files = `git ls-files`.split("\n")
25
26
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-06 00:00:00.000000000 Z
11
+ date: 2018-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,7 +114,21 @@ dependencies:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '1.2'
117
- description: A simple-and-nimble version of Rails.
117
+ - !ruby/object:Gem::Dependency
118
+ name: tuktuk
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 0.6.0
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.6.0
131
+ description: Ruby on Snails.
118
132
  email:
119
133
  - tomas@forkhq.com
120
134
  executables: []
@@ -152,5 +166,5 @@ rubyforge_project:
152
166
  rubygems_version: 2.6.13
153
167
  signing_key:
154
168
  specification_version: 4
155
- summary: A simple-and-nimble version of Rails.
169
+ summary: Ruby on Snails.
156
170
  test_files: []