phocoder-rails 0.0.33
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.
- 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
|