jobler 0.0.5 → 0.0.6

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: bc6575214ca69340a22f08224606c5054ede5a4b
4
- data.tar.gz: 259b5d8e7f71b30eb3d5af07e22bc6f6e6ff47f8
3
+ metadata.gz: 1def2ed60486bd0da4f736ea8109cb33fd70842c
4
+ data.tar.gz: d4fcbab53d884c89d8e952b9e0deb799bdc6c0d7
5
5
  SHA512:
6
- metadata.gz: cc6428a298bf822a8964ca74ab5bf05d36dca9b289e8108841abf8b319263da810aa4d520c09eed02bc7345801c1fd7a9a741caa18dee61c238e676b5470177d
7
- data.tar.gz: 4c23cfe4bf54bd0102cc543dd3ed27ae4651175bc71e11deed63e8a406c23090db6956972c928fb56912e650a4bbfa2896e6de672d00b8c64b55759d884e45a0
6
+ metadata.gz: 93390acce23a95427e8a44f777bb87c40d30a26fea8a90cd7e7ab2e2363ab3f6136e6fa3c7bfa0870face2b6a0c138c08ad338335281f94e224194da2435082b
7
+ data.tar.gz: bb38dc88126b4c798ea38cc8de221dd22e5696e188e426761926e76d2b19e6a98e515c2bc980b2ac7470ee424c23ac1df6819b251c0fbfe3a8e2ef1e2b7753a4
data/README.md CHANGED
@@ -97,11 +97,37 @@ class TestRenderJobler < Jobler::BaseJobler
97
97
  content: render(:show)
98
98
  )
99
99
  end
100
+
101
+ def result
102
+ Jobler::RedirectTo.new(url: "/jobler_jobs/jobs/#{job.to_param}")
103
+ end
100
104
  end
101
105
  ```
102
106
 
103
107
  This will render the view located at "app/joblers/test_render_jobler/show.*"
104
108
 
109
+ You should then create a controller something like this:
110
+
111
+ ```ruby
112
+ class JoblerJobsController < ApplicationController
113
+ def show
114
+ @job = Jobler::Job.find_by!(slug: param[:id])
115
+ @result = @job.results.find_by!(name: "render")
116
+ end
117
+ end
118
+ ```
119
+
120
+ And a view in "app/views/jobler_jobs/show.html.erb":
121
+ ```erb
122
+ <%= @result.result.force_encoding("utf-8").html_safe
123
+ ```
124
+
125
+ You should also add a route like this:
126
+ ```ruby
127
+ Rails.application.routes.draw do
128
+ resources :jobler_jobs, only: :show
129
+ end
130
+ ```
105
131
 
106
132
  ## License
107
133
 
@@ -13,7 +13,12 @@ class Jobler::JobsController < Jobler::ApplicationController
13
13
  }
14
14
  }
15
15
  end
16
- format.html
16
+
17
+ if @result.is_a?(Jobler::RedirectTo)
18
+ format.html { redirect_to @result.url }
19
+ else
20
+ format.html
21
+ end
17
22
  end
18
23
  end
19
24
  end
@@ -5,6 +5,8 @@
5
5
  <% if @job.completed? %>
6
6
  <% if @result.is_a?(Jobler::FileDownload) %>
7
7
  <%= link_to "Download", download_path(@job) %>
8
+ <% elsif @result.is_a?(Jobler::PageRender) %>
9
+ <%= @result.body.html_safe %>
8
10
  <% end %>
9
11
  <% elsif @job.error? %>
10
12
  <div class="well">
@@ -0,0 +1,7 @@
1
+ class AddHostProtocolAndPortToJoblerJobs < ActiveRecord::Migration
2
+ def change
3
+ add_column :jobler_jobs, :host, :string
4
+ add_column :jobler_jobs, :protocol, :string
5
+ add_column :jobler_jobs, :port, :integer
6
+ end
7
+ end
@@ -5,7 +5,8 @@ module Jobler
5
5
  autoload :FileDownload, "#{path}/file_download"
6
6
  autoload :JobScheduler, "#{path}/job_scheduler"
7
7
  autoload :JobRunner, "#{path}/job_runner"
8
- autoload :TemplateRenderer, "#{path}/template_renderer"
8
+ autoload :PageRender, "#{path}/page_render"
9
+ autoload :RedirectTo, "#{path}/redirect_to"
9
10
  end
10
11
 
11
12
  require "jobler/engine"
@@ -60,8 +60,14 @@ class Jobler::BaseJobler
60
60
  template_path = "joblers/#{jobler_name}/#{template_path}"
61
61
  end
62
62
 
63
+ request = ActionDispatch::Request.new(
64
+ "HTTP_HOST" => "#{job.host}:#{job.port}",
65
+ "HTTP_X_FORWARDED_PROTO" => job.protocol
66
+ )
67
+
63
68
  controller = ::ApplicationJoblerController.new
64
69
  controller.instance_variable_set(:@jobler, self)
70
+ controller.request = request
65
71
  controller.response = ActionDispatch::Response.new
66
72
 
67
73
  render_result = controller.render(template_path, formats: Mime::EXTENSION_LOOKUP.keys, layout: false, locals: {jobler: self}.merge(locals))
@@ -9,17 +9,28 @@ class Jobler::JobScheduler
9
9
  end
10
10
 
11
11
  def initialize(args)
12
+ @controller = args[:controller]
12
13
  @jobler_type = args.fetch(:jobler_type)
13
14
  @job_args = args[:job_args]
14
15
  @locale = args[:locale]
15
16
  end
16
17
 
17
18
  def create_job
18
- @job = Jobler::Job.create!(
19
+ @job = Jobler::Job.new(
19
20
  jobler_type: @jobler_type,
20
21
  locale: @locale.presence || I18n.locale,
21
22
  parameters: YAML.dump(@job_args)
22
23
  )
24
+
25
+ if @controller
26
+ @job.assign_attributes(
27
+ host: @controller.request.host,
28
+ port: @controller.request.port,
29
+ protocol: @controller.request.protocol
30
+ )
31
+ end
32
+
33
+ @job.save!
23
34
  end
24
35
 
25
36
  def perform_job_later
@@ -0,0 +1,10 @@
1
+ class Jobler::PageRender
2
+ def initialize(args)
3
+ @job = args.fetch(:job)
4
+ @name = args.fetch(:name)
5
+ end
6
+
7
+ def body
8
+ @job.results.find_by!(name: @name).result
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ class Jobler::RedirectTo
2
+ attr_reader :url
3
+
4
+ def initialize(args)
5
+ @url = args.fetch(:url)
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Jobler
2
- VERSION = "0.0.5".freeze
2
+ VERSION = "0.0.6".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jobler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-06 00:00:00.000000000 Z
11
+ date: 2017-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -53,13 +53,15 @@ files:
53
53
  - db/migrate/20170203161045_add_locale_to_jobs.rb
54
54
  - db/migrate/20170206100737_add_error_message_and_error_backtrace_to_jobs.rb
55
55
  - db/migrate/20170206104246_add_slug_to_jobs.rb
56
+ - db/migrate/20170217082955_add_host_protocol_and_port_to_jobler_jobs.rb
56
57
  - lib/jobler.rb
57
58
  - lib/jobler/base_jobler.rb
58
59
  - lib/jobler/engine.rb
59
60
  - lib/jobler/file_download.rb
60
61
  - lib/jobler/job_runner.rb
61
62
  - lib/jobler/job_scheduler.rb
62
- - lib/jobler/template_renderer.rb
63
+ - lib/jobler/page_render.rb
64
+ - lib/jobler/redirect_to.rb
63
65
  - lib/jobler/version.rb
64
66
  - lib/tasks/jobler_tasks.rake
65
67
  homepage: https://www.github.com/kaspernj/jobler
@@ -1,3 +0,0 @@
1
- class TemplateRenderer
2
- include RenderAnywhere
3
- end