imprenta 0.0.2 → 0.0.3

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: 5fa4d44f02caca84304d491edc76e7de0de8929f
4
- data.tar.gz: 867f4e5beb6b3e58eb04455efafc9c804d704592
3
+ metadata.gz: addc2eedab80a43efb3d54cd43969312be95631e
4
+ data.tar.gz: 6e50491dc5a26982441fd9cd7aad02809b65cb83
5
5
  SHA512:
6
- metadata.gz: d97d77fe122eafce9d6bc5b76c35cd7a4308f8b314e60c8021b7918ffcdb2d795badadec2c7df4a3c7bd89cf8ceb6d284c007e0f928d001bf41e4d2b63409ab9
7
- data.tar.gz: 80d2e0f80eaa62ca1c879d85a69a83b208e5184b504760a8c3524c97d8fc923272c6efae536bac62eeeaf018dbc2f951f2692ab6b4e49b0e3c514d62fafae007
6
+ metadata.gz: 9d1f1d4b162d4c010c46d98d3686a4eb7dc43775c2afff88b9ee2f4aace1e4af12178a637560de7ee7132c39969eca159ce1da33bb00465d9f182d293f19c769
7
+ data.tar.gz: 40b4b6e2f02600ac8844ea01c1302bbb511f1d10e8bd6e4914f5cc3401613157bac2b4866d586fa9938b5a7f03deb549d563a4c515a921587fa5eab3af5140d6
data/README.md CHANGED
@@ -27,37 +27,34 @@ Or install it yourself as:
27
27
 
28
28
  In the action that you want to cache, use something like the following:
29
29
 
30
- ``ruby
30
+ ```ruby
31
+ def publish
32
+ imprenta_cache_template(template: "path/to/template",
33
+ layout: 'application',
34
+ id: 'mytemplateid')
31
35
 
32
- def publish
33
- imprenta_cache_template(template: "path/to/template",
34
- layout: 'application',
35
- id: 'mytemplateid')
36
+ redirect_to root_path, success: 'Yei page published!'
37
+ end
38
+ ```
39
+
36
40
 
37
- redirect_to media_kit_path(@media_kit), notice: 'Media Kit Published'
38
- end
39
- ``
40
41
 
41
42
  Then in your routes add the following:
42
43
 
43
- ``ruby
44
-
45
- get 'mystatic-pages/:id', :to => Imprenta.server
46
-
47
- ``
44
+ ```ruby
45
+ get 'mystatic-pages/:id', :to => Imprenta.server
46
+ ```
48
47
 
49
48
  ## Configuration
50
49
 
51
- Imprenta allows you to customize the Rack server with your own middlewares. By defaut, it
50
+ Imprenta allows you to customize the Rack Server (Imprenta.server) with your own middlewares. By defaut, it
52
51
  will have loaded a middleware to handle 500,400,401,404, etc.
53
52
 
54
- ``ruby
55
-
53
+ ```ruby
56
54
  Imprenta.configure do |config|
57
55
  config.middlewares.use Bugsnag::Rack
58
56
  end
59
-
60
- ``
57
+ ```
61
58
 
62
59
  ## Contributing
63
60
 
@@ -2,11 +2,12 @@ module Imprenta
2
2
  class Configuration
3
3
  # Same configuration pattern that sferik uses in:
4
4
  # https://github.com/sferik/mtgox/blob/master/lib/mtgox/configuration.rb
5
- VALID_OPTIONS_KEYS = [:middlewares]
5
+ VALID_OPTIONS_KEYS = [:middlewares,
6
+ :custom_domain,
7
+ :development]
6
8
 
7
9
  attr_accessor *VALID_OPTIONS_KEYS
8
10
 
9
- # When this module is extended, set all configuration options to their default values
10
11
  def initialize
11
12
  reset
12
13
  setup_default_middlewares
@@ -18,14 +19,20 @@ module Imprenta
18
19
 
19
20
  def reset
20
21
  self.middlewares = ActionDispatch::MiddlewareStack.new
22
+ self.development = false
23
+ self.custom_domain = false
21
24
  end
22
25
 
23
26
  def setup_default_middlewares
24
- self.middlewares.use ActionDispatch::ShowExceptions, show_exception_app # unless Rails.env.development?
27
+ self.middlewares.use ActionDispatch::ShowExceptions, show_exception_app
25
28
  end
26
29
 
27
30
  private
28
31
 
32
+ def development?
33
+ development
34
+ end
35
+
29
36
  def show_exception_app
30
37
  ActionDispatch::PublicExceptions.new(Rails.public_path)
31
38
  end
@@ -1,13 +1,28 @@
1
1
  module Imprenta
2
2
  class FileRack
3
+ attr_accessor :custom_domain
4
+
5
+ def initialize(args = {})
6
+ @custom_domain = args[:custom_domain]
7
+ end
8
+
3
9
  def call(env)
4
- path = env["SERVER_NAME"]
5
- file, headers = pick_file_and_headers_for_path(path, env)
10
+ request = ::Rack::Request.new(env)
11
+ path = custom_domain ? env["SERVER_NAME"] : id_from_env(env)
12
+
13
+ raise ::ActionController::RoutingError.exception("Page Not Found") unless path
14
+
15
+ file, headers = pick_file_and_headers_for_path(path, request)
16
+ env.merge!("PATH_INFO" => "/")
6
17
  ::Rack::File.new(file, headers).call(env)
7
18
  end
8
19
 
9
20
  private
10
21
 
22
+ def id_from_env(env)
23
+ env["action_dispatch.request.path_parameters"][:id]
24
+ end
25
+
11
26
  def get_best_encoding(request)
12
27
  ::Rack::Utils.select_best_encoding(%w(gzip identity), request.accept_encoding)
13
28
  end
@@ -16,8 +31,7 @@ module Imprenta
16
31
  @headers ||= {'Content-Type' => 'text/html' }
17
32
  end
18
33
 
19
- def pick_file_and_headers_for_path(path, env)
20
- request = ::Rack::Request.new(env)
34
+ def pick_file_and_headers_for_path(path, request)
21
35
  encoding = get_best_encoding(request)
22
36
  file = "#{Rails.public_path}/imprenta/" + path + '.html'
23
37
  if File.exist?(file)
@@ -1,7 +1,11 @@
1
1
  module Imprenta
2
2
  class StaticServer
3
+
4
+ attr_accessor :custom_domain
5
+
3
6
  def initialize(args = {})
4
7
  @middleware_stack = args.fetch(:middlewares)
8
+ @custom_domain = args[:custom_domain]
5
9
  end
6
10
 
7
11
  def call(env)
@@ -12,7 +16,7 @@ module Imprenta
12
16
  private
13
17
 
14
18
  def build_app
15
- @app ||= @middleware_stack.build(Imprenta::FileRack.new)
19
+ @app ||= @middleware_stack.build(Imprenta::FileRack.new(custom_domain: custom_domain))
16
20
  end
17
21
 
18
22
  end
@@ -1,3 +1,3 @@
1
1
  module Imprenta
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/imprenta.rb CHANGED
@@ -10,7 +10,8 @@ module Imprenta
10
10
  class << self
11
11
 
12
12
  def server
13
- Imprenta::StaticServer.new(middlewares: configuration.middlewares)
13
+ Imprenta::StaticServer.new(middlewares: configuration.middlewares,
14
+ custom_domain: configuration.custom_domain)
14
15
  end
15
16
 
16
17
  def configuration
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imprenta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-30 00:00:00.000000000 Z
11
+ date: 2013-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,4 +98,3 @@ specification_version: 4
98
98
  summary: This gem helps the process of publishing and serving static pages within
99
99
  rails
100
100
  test_files: []
101
- has_rdoc: