jobler 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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