phocoder-rails 0.0.33
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +46 -0
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +44 -0
- data/LICENSE.txt +20 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +56 -0
- data/VERSION +5 -0
- data/app/controllers/phocoder_controller.rb +118 -0
- data/app/helpers/phocoder_helper.rb +320 -0
- data/app/models/encodable_job.rb +91 -0
- data/app/views/phocoder/_offline_video_embed.html.erb +19 -0
- data/app/views/phocoder/_thumbnail_update.html.erb +3 -0
- data/app/views/phocoder/_video_embed.html.erb +23 -0
- data/app/views/phocoder/multi_thumbnail_update.json.erb +7 -0
- data/app/views/phocoder/thumbnail_update.js.erb +9 -0
- data/config/routes.rb +8 -0
- data/lib/generators/phocoder_rails/model_update_generator.rb +52 -0
- data/lib/generators/phocoder_rails/scaffold_generator.rb +94 -0
- data/lib/generators/phocoder_rails/setup_generator.rb +33 -0
- data/lib/generators/phocoder_rails/templates/controller.rb +71 -0
- data/lib/generators/phocoder_rails/templates/helper.rb +5 -0
- data/lib/generators/phocoder_rails/templates/migration.rb +24 -0
- data/lib/generators/phocoder_rails/templates/model.rb +20 -0
- data/lib/generators/phocoder_rails/templates/model_migration.rb +56 -0
- data/lib/generators/phocoder_rails/templates/model_thumbnail.rb +5 -0
- data/lib/generators/phocoder_rails/templates/model_update_migration.rb +64 -0
- data/lib/generators/phocoder_rails/templates/phocodable.yml +28 -0
- data/lib/generators/phocoder_rails/templates/views/_form.html.erb.tt +23 -0
- data/lib/generators/phocoder_rails/templates/views/index.html.erb.tt +26 -0
- data/lib/generators/phocoder_rails/templates/views/new.html.erb.tt +5 -0
- data/lib/generators/phocoder_rails/templates/views/show.html.erb.tt +12 -0
- data/lib/phocoder_rails.rb +12 -0
- data/lib/phocoder_rails/acts_as_phocodable.rb +1153 -0
- data/lib/phocoder_rails/engine.rb +24 -0
- data/lib/phocoder_rails/errors.rb +46 -0
- data/phocoder-rails.gemspec +219 -0
- data/public/images/building.gif +0 -0
- data/public/images/error.png +0 -0
- data/public/images/play_small.png +0 -0
- data/public/images/storing.gif +0 -0
- data/public/images/waiting.gif +0 -0
- data/public/javascripts/phocodable.js +110 -0
- data/public/javascripts/video-js-2.0.2/.DS_Store +0 -0
- data/public/javascripts/video-js-2.0.2/LICENSE.txt +165 -0
- data/public/javascripts/video-js-2.0.2/README.markdown +202 -0
- data/public/javascripts/video-js-2.0.2/demo-subtitles.srt +13 -0
- data/public/javascripts/video-js-2.0.2/demo.html +101 -0
- data/public/javascripts/video-js-2.0.2/skins/hu.css +116 -0
- data/public/javascripts/video-js-2.0.2/skins/tube.css +111 -0
- data/public/javascripts/video-js-2.0.2/skins/vim.css +89 -0
- data/public/javascripts/video-js-2.0.2/video-js.css +242 -0
- data/public/javascripts/video-js-2.0.2/video.js +1758 -0
- data/public/stylesheets/phocodable.css +19 -0
- data/spec/controllers/phocoder_controller_spec.rb +123 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +7 -0
- data/spec/dummy/app/controllers/images_controller.rb +72 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/images_helper.rb +5 -0
- data/spec/dummy/app/models/image.rb +20 -0
- data/spec/dummy/app/models/image_thumbnail.rb +5 -0
- data/spec/dummy/app/models/image_upload.rb +11 -0
- data/spec/dummy/app/views/images/_form.html.erb +23 -0
- data/spec/dummy/app/views/images/index.html.erb +26 -0
- data/spec/dummy/app/views/images/new.html.erb +5 -0
- data/spec/dummy/app/views/images/show.html.erb +12 -0
- data/spec/dummy/app/views/layouts/application.html.erb +18 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +8 -0
- data/spec/dummy/config/environments/development.rb +26 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +40 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +60 -0
- data/spec/dummy/db/migrate/001_create_image_uploads.rb +37 -0
- data/spec/dummy/db/migrate/20110523165213_add_parent_type_to_image_uploads.rb +11 -0
- data/spec/dummy/db/migrate/20110523165522_create_encodable_jobs.rb +24 -0
- data/spec/dummy/db/migrate/20111101024507_create_images.rb +56 -0
- data/spec/dummy/db/schema.rb +99 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/index.html +239 -0
- data/spec/dummy/public/javascripts/application.js +2 -0
- data/spec/dummy/public/javascripts/controls.js +965 -0
- data/spec/dummy/public/javascripts/dragdrop.js +974 -0
- data/spec/dummy/public/javascripts/effects.js +1123 -0
- data/spec/dummy/public/javascripts/jquery-1.6.4.js +9046 -0
- data/spec/dummy/public/javascripts/prototype.js +6001 -0
- data/spec/dummy/public/javascripts/rails.js +175 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/engine_spec.rb +12 -0
- data/spec/fixtures/big_eye_tiny.jpg +0 -0
- data/spec/fixtures/octologo.png +0 -0
- data/spec/fixtures/test.txt +2 -0
- data/spec/fixtures/video-test.mov +0 -0
- data/spec/helpers/phocoder_helper_spec.rb +421 -0
- data/spec/integration/navigation_spec.rb +10 -0
- data/spec/models/acts_as_phocodable_spec.rb +664 -0
- data/spec/models/encodable_job_spec.rb +50 -0
- data/spec/phocoder_rails_spec.rb +8 -0
- data/spec/routing/phocoder_routing_spec.rb +19 -0
- data/spec/spec_helper.rb +75 -0
- metadata +375 -0
@@ -0,0 +1,91 @@
|
|
1
|
+
class EncodableJob < ActiveRecord::Base
|
2
|
+
|
3
|
+
belongs_to :encodable, :polymorphic=>true
|
4
|
+
|
5
|
+
def self.update_from_phocoder(params)
|
6
|
+
Rails.logger.debug "tying to call update from phocoder for params = #{params.to_json}"
|
7
|
+
puts "tying to call update from phocoder for params = #{params.to_json}"
|
8
|
+
if !params[:output].blank?
|
9
|
+
Rails.logger.debug "find_by_phocoder_job_id_and_phocoder_output_id_and_encodable_type #{params[:job][:id]} - #{params[:output][:id]} ,#{params[:class]}"
|
10
|
+
puts "find_by_phocoder_job_id_and_phocoder_output_id_and_encodable_type #{params[:job][:id]} - #{params[:output][:id]} ,#{params[:class]}"
|
11
|
+
job = self.find_by_phocoder_job_id_and_phocoder_output_id_and_encodable_type params[:job][:id],params[:output][:id],params[:class]
|
12
|
+
|
13
|
+
|
14
|
+
Rails.logger.debug "the job = #{job}"
|
15
|
+
img_params = params[:output]
|
16
|
+
begin
|
17
|
+
encodable = job.encodable
|
18
|
+
rescue NoMethodError => ex
|
19
|
+
# here we try to fall back if we can't find an Encodable
|
20
|
+
encodable = params[:class].constantize.find params[:id]
|
21
|
+
end
|
22
|
+
encodable.filename = File.basename(params[:output][:url]) if encodable.filename.blank?
|
23
|
+
if ActsAsPhocodable.storeage_mode == "local"
|
24
|
+
encodable.save_url(params[:output][:url])
|
25
|
+
end
|
26
|
+
else
|
27
|
+
puts "find_by_phocoder_job_id_and_phocoder_input_id_and_encodable_type #{params[:job][:id]}, #{params[:input][:id]}, #{params[:class]}"
|
28
|
+
job = find_by_phocoder_job_id_and_phocoder_input_id_and_encodable_type params[:job][:id],params[:input][:id],params[:class]
|
29
|
+
puts "found job = #{job.to_json}"
|
30
|
+
puts "job.encodable = #{job.encodable}"
|
31
|
+
img_params = params[:input]
|
32
|
+
encodable = job.encodable
|
33
|
+
end
|
34
|
+
[:file_size,:width,:height,:taken_at,:lat,:lng,:saturated_pixels,:gauss].each do |att|
|
35
|
+
setter = att.to_s + "="
|
36
|
+
if encodable.respond_to? setter and !img_params[att].blank?
|
37
|
+
encodable.send setter, img_params[att]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
#job.file_size = img_params[:file_size]
|
42
|
+
#job.width = img_params[:width]
|
43
|
+
#job.height = img_params[:height]
|
44
|
+
encodable.encodable_status = "ready"
|
45
|
+
encodable.save
|
46
|
+
encodable.fire_ready_callback
|
47
|
+
# may not have a job if the EncodableJob didn't get created for some reason
|
48
|
+
if job
|
49
|
+
job.phocoder_status = "ready"
|
50
|
+
job.save
|
51
|
+
job
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
# Updating from zencoder is a two pass operation.
|
58
|
+
# This method gets called for each output when it's ready.
|
59
|
+
# Once all outputs are ready, we call parent.check_zencoder_details
|
60
|
+
def self.update_from_zencoder(params)
|
61
|
+
Rails.logger.debug "tying to call update from zencoder for params = #{params}"
|
62
|
+
job = find_by_zencoder_output_id params[:output][:id]
|
63
|
+
encodable = job.encodable
|
64
|
+
if params[:output][:url].match /%2F(.*)\?/
|
65
|
+
encodable.filename = $1
|
66
|
+
else
|
67
|
+
encodable.filename = File.basename(params[:output][:url].match(/(.*)\??/)[1])
|
68
|
+
end
|
69
|
+
#job.filename = File.basename(params[:output][:url].match(/(.*)\??/)[1]) if job.filename.blank?
|
70
|
+
if ActsAsPhocodable.storeage_mode == "local"
|
71
|
+
encodable.save_url(params[:output][:url])
|
72
|
+
end
|
73
|
+
job.zencoder_status = encodable.encodable_status = "ready"
|
74
|
+
encodable.save
|
75
|
+
encodable.fire_ready_callback
|
76
|
+
job.save
|
77
|
+
puts "~~~~~~~~~~~~~~~~~~~~` #{encodable.to_json}"
|
78
|
+
|
79
|
+
if encodable.parent
|
80
|
+
puts " WE NEED TO CHECK ON PARENT on #{encodable.to_json}"
|
81
|
+
encodable.parent.check_zencoder_details
|
82
|
+
#else
|
83
|
+
# puts " WE NEED TO CHECK OUR SELF!"
|
84
|
+
# encodable.check_zencoder_details
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<!-- Begin VideoJS -->
|
2
|
+
<div class="video-js-box vim-css">
|
3
|
+
<!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
|
4
|
+
<video class="video-js" width="<%=width%>" height="<%=height%>" controls preload poster="<%= video.get_thumbnail('poster').public_url %>">
|
5
|
+
<source src="<%= video.public_url %>">
|
6
|
+
<!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
|
7
|
+
<object class="vjs-flash-fallback" width="<%=width%>" height="<%=height%>" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
|
8
|
+
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /><param name="allowfullscreen" value="true" /><param name="flashvars" value='config={"playlist":["<%= video.get_thumbnail('poster').public_url %>", {"url": "<%= video.public_url %>","autoPlay":false,"autoBuffering":true}]}' /><!-- Image Fallback. Typically the same as the poster image. --><img src="<%= video.get_thumbnail('poster').public_url %>" width="<%=width%>" height="<%=height%>" alt="Poster Image" title="No video playback capabilities." />
|
9
|
+
</object>
|
10
|
+
</video><!-- Download links provided for devices that can't play video in the browser. -->
|
11
|
+
<p class="vjs-no-video">
|
12
|
+
<strong>Download Video:</strong>
|
13
|
+
<a href="<%= video.public_url %>">Original</a>
|
14
|
+
<br>
|
15
|
+
<!-- Support VideoJS by keeping this link. --><a href="http://videojs.com">HTML5 Video Player</a>
|
16
|
+
by VideoJS
|
17
|
+
</p>
|
18
|
+
</div>
|
19
|
+
<!-- End VideoJS -->
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!-- Begin VideoJS -->
|
2
|
+
<div class="video-js-box vim-css">
|
3
|
+
<!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
|
4
|
+
<video class="video-js" width="<%=width%>" height="<%=height%>" controls preload poster="<%= video.get_thumbnail('poster').public_url %>">
|
5
|
+
<source src="<%= video.get_thumbnail('mp4').public_url %>" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
|
6
|
+
<source src="<%= video.get_thumbnail('webm').public_url %>" type='video/webm; codecs="vp8, vorbis"'>
|
7
|
+
<source src="<%= video.get_thumbnail('ogv').public_url %>" type='video/ogg; codecs="theora, vorbis"'>
|
8
|
+
<!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
|
9
|
+
<object class="vjs-flash-fallback" width="<%=width%>" height="<%=height%>" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
|
10
|
+
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /><param name="allowfullscreen" value="true" /><param name="flashvars" value='config={"playlist":["<%= video.get_thumbnail('poster').public_url %>", {"url": "<%= video.get_thumbnail('mp4').public_url %>","autoPlay":false,"autoBuffering":true}]}' /><!-- Image Fallback. Typically the same as the poster image. --><img src="<%= video.get_thumbnail('poster').public_url %>" width="<%=width%>" height="<%=height%>" alt="Poster Image" title="No video playback capabilities." />
|
11
|
+
</object>
|
12
|
+
</video><!-- Download links provided for devices that can't play video in the browser. -->
|
13
|
+
<p class="vjs-no-video">
|
14
|
+
<strong>Download Video:</strong>
|
15
|
+
<a href="<%= video.get_thumbnail('mp4').public_url %>">MP4</a>,
|
16
|
+
<a href="<%= video.get_thumbnail('webm').public_url %>">WebM</a>,
|
17
|
+
<a href="<%= video.get_thumbnail('ogv').public_url %>">Ogg</a>
|
18
|
+
<br>
|
19
|
+
<!-- Support VideoJS by keeping this link. --><a href="http://videojs.com">HTML5 Video Player</a>
|
20
|
+
by VideoJS
|
21
|
+
</p>
|
22
|
+
</div>
|
23
|
+
<!-- End VideoJS -->
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
<% @outputs.each_with_index do |output,i| %>
|
3
|
+
<% @img = output[:encodable] %>
|
4
|
+
<% @random = output[:random] %>
|
5
|
+
"<%= output[:elem_id] %>" : "<%= escape_javascript(render(:partial=>"thumbnail_update.html.erb", :locals => {:params => output} )) %>" <%= "," if i != @outputs.size %>
|
6
|
+
<% end %>
|
7
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% if ActsAsPhocodable.javascript_library == 'prototype' %>
|
2
|
+
|
3
|
+
$("<%= @img.class.to_s %>_<%= @img.id.to_s %>_<%= @random %>").replace("<%= escape_javascript(render(:partial=>"thumbnail_update")) %>")
|
4
|
+
|
5
|
+
<% else %>
|
6
|
+
|
7
|
+
$('#<%= @img.class.to_s %>_<%= @img.id.to_s %>_<%= @random %>').replaceWith("<%= escape_javascript(render(:partial=>"thumbnail_update")) %>")
|
8
|
+
|
9
|
+
<% end %>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
match "phocoder/phocoder_notifications/:class/:id", :to=>"phocoder#phocoder_notification_update", :via=>:post
|
4
|
+
match "phocoder/zencoder_notifications/:class/:id", :to=>"phocoder#zencoder_notification_update", :via=>:post
|
5
|
+
match "phocoder/thumbnail_update", :to=>"phocoder#thumbnail_update", :via=>:post
|
6
|
+
match "phocoder/multi_thumbnail_update", :to=>"phocoder#multi_thumbnail_update", :via=>:post
|
7
|
+
|
8
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
module PhocoderRails
|
4
|
+
module Generators
|
5
|
+
|
6
|
+
class ModelUpdateGenerator < Rails::Generators::NamedBase
|
7
|
+
|
8
|
+
include Rails::Generators::Migration
|
9
|
+
|
10
|
+
#argument :model_names, :type => :array, :default => [], :banner => "action action"
|
11
|
+
#check_class_collision :suffix => "PhocoderRails"
|
12
|
+
|
13
|
+
source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
14
|
+
|
15
|
+
def self.next_migration_number(dirname)
|
16
|
+
if ActiveRecord::Base.timestamped_migrations
|
17
|
+
Time.new.utc.strftime("%Y%m%d%H%M%S")
|
18
|
+
else
|
19
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_migration_file
|
24
|
+
migration_template 'model_update_migration.rb', "db/migrate/make_#{file_name.pluralize}_encodable.rb"
|
25
|
+
#migration_template 'model_thumbnail_migration.rb', "db/migrate/create_#{file_name.singularize}_thumbnails.rb"
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_model_file
|
29
|
+
#template 'model.rb', File.join('app/models', class_path, "#{file_name.singularize}.rb")
|
30
|
+
template 'model_thumbnail.rb', File.join('app/models', class_path, "#{file_name.singularize}_thumbnail.rb")
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
#def create_views_for(engine)
|
37
|
+
# for state in model_names do
|
38
|
+
# @state = state
|
39
|
+
# @path = File.join('app/cells', file_name, "#{state}.html.#{engine}")
|
40
|
+
#
|
41
|
+
# template "view.#{engine}", @path
|
42
|
+
# end
|
43
|
+
#end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
module PhocoderRails
|
4
|
+
module Generators
|
5
|
+
|
6
|
+
class ScaffoldGenerator < Rails::Generators::NamedBase
|
7
|
+
|
8
|
+
include Rails::Generators::Migration
|
9
|
+
|
10
|
+
#argument :model_names, :type => :array, :default => [], :banner => "action action"
|
11
|
+
#check_class_collision :suffix => "PhocoderRails"
|
12
|
+
|
13
|
+
source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
14
|
+
|
15
|
+
def self.next_migration_number(dirname)
|
16
|
+
if ActiveRecord::Base.timestamped_migrations
|
17
|
+
Time.new.utc.strftime("%Y%m%d%H%M%S")
|
18
|
+
else
|
19
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_migration_file
|
24
|
+
migration_template 'model_migration.rb', "db/migrate/create_#{file_name.pluralize}.rb"
|
25
|
+
#migration_template 'model_thumbnail_migration.rb', "db/migrate/create_#{file_name.singularize}_thumbnails.rb"
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_model_file
|
29
|
+
template 'model.rb', File.join('app/models', class_path, "#{file_name.singularize}.rb")
|
30
|
+
template 'model_thumbnail.rb', File.join('app/models', class_path, "#{file_name.singularize}_thumbnail.rb")
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_helper_file
|
34
|
+
template 'helper.rb', File.join('app/helpers', class_path, "#{file_name.pluralize}_helper.rb")
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_controller_file
|
38
|
+
template 'controller.rb', File.join('app/controllers', class_path, "#{file_name.pluralize}_controller.rb")
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_views
|
42
|
+
directory 'views', File.join('app/views', class_path, "#{file_name.pluralize}" )
|
43
|
+
#["_form.html.erb","index.html.erb","new.html.erb","show.html.erb"].each do |view|
|
44
|
+
# template "views/#{view}", File.join('app/views', class_path, "#{file_name.pluralize}", view )
|
45
|
+
#end
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_route
|
49
|
+
route("resources :#{file_name.pluralize}, :except=>[:edit,:update]")
|
50
|
+
end
|
51
|
+
|
52
|
+
#class_option :view_engine, :type => :string, :aliases => "-t", :desc => "Template engine for the views. Available options are 'erb' and 'haml'.", :default => "erb"
|
53
|
+
#class_option :haml, :type => :boolean, :default => false
|
54
|
+
|
55
|
+
def do_a_thing
|
56
|
+
puts "We are doing a thing!!!!!!!!!!!!!!!! #{file_name}"
|
57
|
+
end
|
58
|
+
|
59
|
+
#def create_cell_file
|
60
|
+
# template 'cell.rb', File.join('app/cells', class_path, "#{file_name}_cell.rb")
|
61
|
+
#end
|
62
|
+
|
63
|
+
#def create_views
|
64
|
+
# if options[:view_engine].to_s == "haml" or options[:haml]
|
65
|
+
# create_views_for(:haml)
|
66
|
+
# else
|
67
|
+
# create_views_for(:erb)
|
68
|
+
# end
|
69
|
+
#end
|
70
|
+
|
71
|
+
#def create_test
|
72
|
+
# @states = model_names
|
73
|
+
# template 'cell_test.rb', File.join('test/cells/', "#{file_name}_cell_test.rb")
|
74
|
+
#end
|
75
|
+
|
76
|
+
protected
|
77
|
+
|
78
|
+
#def create_views_for(engine)
|
79
|
+
# for state in model_names do
|
80
|
+
# @state = state
|
81
|
+
# @path = File.join('app/cells', file_name, "#{state}.html.#{engine}")
|
82
|
+
#
|
83
|
+
# template "view.#{engine}", @path
|
84
|
+
# end
|
85
|
+
#end
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
module PhocoderRails
|
4
|
+
module Generators
|
5
|
+
|
6
|
+
class SetupGenerator < Rails::Generators::Base
|
7
|
+
|
8
|
+
include Rails::Generators::Migration
|
9
|
+
def self.source_root
|
10
|
+
@source_root ||= File.join(File.dirname(__FILE__), 'templates')
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.next_migration_number(dirname)
|
14
|
+
if ActiveRecord::Base.timestamped_migrations
|
15
|
+
Time.new.utc.strftime("%Y%m%d%H%M%S")
|
16
|
+
else
|
17
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_migration_file
|
22
|
+
migration_template 'migration.rb', 'db/migrate/create_encodable_jobs.rb'
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_config_file
|
26
|
+
template 'phocodable.yml', File.join('config','phocodable.yml')
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class <%= name.classify.pluralize %>Controller < ApplicationController
|
2
|
+
|
3
|
+
# This example does not handle all of the ins and outs of
|
4
|
+
# allowing someone to 'replace' a file by edit/update.
|
5
|
+
# That's a sticky problem that would only cloud
|
6
|
+
# the concepts we're demonstrating here.
|
7
|
+
|
8
|
+
|
9
|
+
# GET /<%= name.pluralize %>
|
10
|
+
# GET /<%= name.pluralize %>.xml
|
11
|
+
def index
|
12
|
+
@<%= name.pluralize %> = <%= name.classify %>.top_level.all
|
13
|
+
|
14
|
+
respond_to do |format|
|
15
|
+
format.html # index.html.erb
|
16
|
+
format.xml { render :xml => @<%= name.pluralize %> }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET /<%= name.pluralize %>/1
|
21
|
+
# GET /<%= name.pluralize %>/1.xml
|
22
|
+
def show
|
23
|
+
@<%= name.singularize %> = <%= name.classify %>.find(params[:id])
|
24
|
+
|
25
|
+
respond_to do |format|
|
26
|
+
format.html # show.html.erb
|
27
|
+
format.xml { render :xml => @<%= name.singularize %> }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# GET /<%= name.pluralize %>/new
|
32
|
+
# GET /<%= name.pluralize %>/new.xml
|
33
|
+
def new
|
34
|
+
@<%= name.singularize %> = <%= name.classify %>.new
|
35
|
+
|
36
|
+
respond_to do |format|
|
37
|
+
format.html # new.html.erb
|
38
|
+
format.xml { render :xml => @<%= name.singularize %> }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
# POST /<%= name.pluralize %>
|
44
|
+
# POST /<%= name.pluralize %>.xml
|
45
|
+
def create
|
46
|
+
@<%= name.singularize %> = <%= name.classify %>.new(params[:<%= name.singularize %>])
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
if @<%= name.singularize %>.save
|
50
|
+
format.html { redirect_to(@<%= name.singularize %>, :notice => "<%= name.classify %> was successfully created.") }
|
51
|
+
format.xml { render :xml => @<%= name.singularize %>, :status => :created, :location => @<%= name.singularize %> }
|
52
|
+
else
|
53
|
+
format.html { render :action => "new" }
|
54
|
+
format.xml { render :xml => @<%= name.singularize %>.errors, :status => :unprocessable_entity }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
# DELETE /<%= name.pluralize %>/1
|
61
|
+
# DELETE /<%= name.pluralize %>/1.xml
|
62
|
+
def destroy
|
63
|
+
@<%= name.singularize %> = <%= name.classify %>.find(params[:id])
|
64
|
+
@<%= name.singularize %>.destroy
|
65
|
+
|
66
|
+
respond_to do |format|
|
67
|
+
format.html { redirect_to(<%= name.pluralize %>_url) }
|
68
|
+
format.xml { head :ok }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class CreateEncodableJobs < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :encodable_jobs do |t|
|
4
|
+
t.string "encodable_type"
|
5
|
+
t.integer "encodable_id"
|
6
|
+
t.integer "phocoder_job_id"
|
7
|
+
t.integer "phocoder_input_id"
|
8
|
+
t.integer "phocoder_output_id"
|
9
|
+
t.string "phocoder_status"
|
10
|
+
t.integer "zencoder_job_id"
|
11
|
+
t.integer "zencoder_input_id"
|
12
|
+
t.integer "zencoder_output_id"
|
13
|
+
t.string "zencoder_status"
|
14
|
+
t.string "zencoder_url"
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
add_index :encodable_jobs, [:encodable_type, :encodable_id]
|
18
|
+
add_index :encodable_jobs, :id
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
drop_table :encodable_jobs
|
23
|
+
end
|
24
|
+
end
|