rails-audio_glue 0.0.1
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 +7 -0
- data/LICENSE.txt +20 -0
- data/README.markdown +122 -0
- data/lib/generators/rails_audio_glue/install/USAGE +9 -0
- data/lib/generators/rails_audio_glue/install/install_generator.rb +21 -0
- data/lib/generators/rails_audio_glue/install/templates/audio_glue_helper.rb.erb +6 -0
- data/lib/generators/rails_audio_glue/install/templates/initializer.rb.erb +21 -0
- data/lib/generators/rails_audio_glue/template/USAGE +8 -0
- data/lib/generators/rails_audio_glue/template/template_generator.rb +18 -0
- data/lib/generators/rails_audio_glue/template/templates/template.glue.erb +10 -0
- data/lib/rails-audio_glue.rb +1 -0
- data/lib/rails_audio_glue.rb +21 -0
- data/lib/rails_audio_glue/controller_methods.rb +41 -0
- data/lib/rails_audio_glue/engine.rb +12 -0
- metadata +202 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 46ff6190f4a333acbf050210d81979c661b03565
|
4
|
+
data.tar.gz: 89092439964b81c63dfeaab121484cf6819d6727
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8fa6393352e06977ff0e3d88f3e7f5cd617588fd0cf9f7bd4e16731a4c04e945bba46fad21a7dbc29aa0dc490622ff26bfd3d4862545cfaf521d6933e903ad40
|
7
|
+
data.tar.gz: c09b95ef746dada28417636201bd6bef7cb135a38ce6e236a2fbcba21596fc46c5a1f8531b1ce750c4d8d12afe4334d8b876610797726de808971e640dc5b30b
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 TMX Credit, author Potapov Sergey
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
# Rails AudioGlue
|
2
|
+
[](https://travis-ci.org/TMXCredit/rails-audio_glue)
|
3
|
+
|
4
|
+
A Rails plugin which integrates AudioGlue - a library used to assemble audio
|
5
|
+
from snippets using templates.
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
### Install
|
10
|
+
|
11
|
+
After adding `gem 'rails-audio_glue'` to `Gemfile` and running `bundle`,
|
12
|
+
run the generator to install the basic stuff:
|
13
|
+
|
14
|
+
```sh
|
15
|
+
rails g rails_audio_glue:install
|
16
|
+
|
17
|
+
create config/initializers/audio_glue.rb
|
18
|
+
create app/audio_templates/audio_glue_helper.rb
|
19
|
+
```
|
20
|
+
|
21
|
+
### Audio templates
|
22
|
+
|
23
|
+
Now generate your first audio template:
|
24
|
+
|
25
|
+
```sh
|
26
|
+
rails g rails_audio_glue:template hello_world
|
27
|
+
|
28
|
+
create app/audio_templates/hello_world.glue
|
29
|
+
```
|
30
|
+
|
31
|
+
To get more info about `.glue` templates read
|
32
|
+
[AudioGlue's README](https://github.com/TMXCredit/audio_glue/).
|
33
|
+
|
34
|
+
Ensure you have the following `hello_world.glue` in `app/audio_templates`:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
head {
|
38
|
+
format :mp3
|
39
|
+
rate 44100
|
40
|
+
channels 1
|
41
|
+
}
|
42
|
+
|
43
|
+
body {
|
44
|
+
- file("/path/to/audio/hello.wav")
|
45
|
+
if @say_bye
|
46
|
+
- url("http://some-server.com/say/bye.mp3")
|
47
|
+
end
|
48
|
+
}
|
49
|
+
```
|
50
|
+
|
51
|
+
The output file parameters are described in the `head` section. And
|
52
|
+
the content is described in the `body` section. It's all pure ruby code.
|
53
|
+
|
54
|
+
### Sending audio from controller
|
55
|
+
|
56
|
+
To build an audio file using a template and send it to a user, use the
|
57
|
+
`send_glued_audio` controller method. It receives a template name and template
|
58
|
+
variables as arguments and is built upon the `send_data` method:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
class HelloController < ApplicationController
|
62
|
+
# Convert hello.wav to mp3 and send it as hello_world.mp3:
|
63
|
+
def hi
|
64
|
+
send_glued_audio('hello_world', :say_bye => false)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Concatenate hello.wav and bye.mp3, convert to mp3, and send
|
68
|
+
# as hello_world.mp3:
|
69
|
+
def hi_and_bye
|
70
|
+
send_glued_audio('hello_world', :say_bye => true)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
```
|
74
|
+
|
75
|
+
### Using helpers
|
76
|
+
|
77
|
+
To extend the `body` template section with custom methods, you need
|
78
|
+
to define them in `AudioGlueHelper`. Usually, they are supposed to based
|
79
|
+
upon the `file` and `url` methods.
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
module AudioGlueHelper
|
83
|
+
# The some-speaking-service is supposed to return audio file:
|
84
|
+
def say(text)
|
85
|
+
url("http://some-speaking-service.com/say/#{text}")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
Now you can use the `say` method in the `body` template section:
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
body {
|
94
|
+
- file("/path/to/audio/hello.wav")
|
95
|
+
- say("What's up?")
|
96
|
+
}
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
## Testing
|
101
|
+
|
102
|
+
### Requirements
|
103
|
+
|
104
|
+
You must have the `sqlite3` package installed.
|
105
|
+
|
106
|
+
### Running the Tests
|
107
|
+
|
108
|
+
```sh
|
109
|
+
bundle
|
110
|
+
cd spec/dummy
|
111
|
+
rake db:setup db:migrate
|
112
|
+
cd -
|
113
|
+
rake spec
|
114
|
+
```
|
115
|
+
|
116
|
+
## Credits
|
117
|
+
|
118
|
+
* [Sergey Potapov](https://github.com/greyblake)
|
119
|
+
|
120
|
+
## Copyright
|
121
|
+
|
122
|
+
Copyright (c) 2013 TMX Credit.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RailsAudioGlue
|
2
|
+
# :nodoc:
|
3
|
+
module Generators
|
4
|
+
# :nodoc:
|
5
|
+
class InstallGenerator < ::Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
|
8
|
+
# :nodoc:
|
9
|
+
def create_initializer_file
|
10
|
+
template 'initializer.rb.erb', 'config/initializers/audio_glue.rb'
|
11
|
+
end
|
12
|
+
|
13
|
+
# :nodoc:
|
14
|
+
def create_audio_glue_helper
|
15
|
+
template 'audio_glue_helper.rb.erb',
|
16
|
+
"#{RailsAudioGlue::TEMPLATES_PATH}/audio_glue_helper.rb"
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
RailsAudioGlue.setup do |config|
|
2
|
+
begin
|
3
|
+
require 'audio_glue/sox_adapter'
|
4
|
+
rescue LoadError
|
5
|
+
abort "You need to add `gem \"audio_glue-sox_adapter\"'" \
|
6
|
+
"to your Gemfile to use AudioGlue::SoxAdapter"
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
# Create AudioGlue adapter and builder:
|
11
|
+
adapter = ::AudioGlue::SoxAdapter.new
|
12
|
+
config.builder = ::AudioGlue::Builder.new(adapter)
|
13
|
+
|
14
|
+
# Create template loader
|
15
|
+
templates_path = Rails.application.root.
|
16
|
+
join(RailsAudioGlue::TEMPLATES_PATH).to_s
|
17
|
+
config.loader = ::AudioGlue::TemplateLoader.new(
|
18
|
+
templates_path,
|
19
|
+
:helper => AudioGlueHelper
|
20
|
+
)
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RailsAudioGlue
|
2
|
+
# :nodoc:
|
3
|
+
module Generators
|
4
|
+
# :nodoc:
|
5
|
+
class TemplateGenerator < ::Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
|
8
|
+
argument :template_name, :type => :string
|
9
|
+
|
10
|
+
# :nodoc:
|
11
|
+
def create_template
|
12
|
+
template 'template.glue.erb',
|
13
|
+
"#{RailsAudioGlue::TEMPLATES_PATH}/#{template_name}.glue"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.expand_path('../rails_audio_glue', __FILE__)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'audio_glue'
|
2
|
+
|
3
|
+
require 'rails_audio_glue/controller_methods'
|
4
|
+
require 'rails_audio_glue/engine'
|
5
|
+
|
6
|
+
# Rails plugin which integrates the AudioGlue library.
|
7
|
+
module RailsAudioGlue
|
8
|
+
# The path to the directory where audio templates are supposed to be located.
|
9
|
+
TEMPLATES_PATH = 'app/audio_templates'
|
10
|
+
|
11
|
+
# Instance of AuduoGlue::Builder:
|
12
|
+
mattr_accessor :builder
|
13
|
+
|
14
|
+
# Instance of AuduoGlue::TemplateLoader:
|
15
|
+
mattr_accessor :loader
|
16
|
+
|
17
|
+
# Should be called from initializer to configure RailsAudioGlue.
|
18
|
+
def self.setup
|
19
|
+
yield self
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module RailsAudioGlue
|
2
|
+
# Provides the +send_glued_audio+ method for ApplicationController.
|
3
|
+
module ControllerMethods
|
4
|
+
# Mapper for audio formats and mime types. If the format is unknown,
|
5
|
+
# it will generate it dynamically using a proc.
|
6
|
+
GLUE_MIME_TYPES = {
|
7
|
+
:mp3 => 'audio/mpeg',
|
8
|
+
:m4a => 'audio/mp4',
|
9
|
+
:ogg => 'audio/ogg',
|
10
|
+
:oga => 'audio/ogg',
|
11
|
+
:webma => 'audio/webm',
|
12
|
+
:wav => 'audio/wav',
|
13
|
+
}
|
14
|
+
GLUE_MIME_TYPES.default_proc = lambda { |hash, key| "audio/#{key}"}
|
15
|
+
|
16
|
+
# Assemble the audio using the passed template and variables.
|
17
|
+
# And send it as data.
|
18
|
+
#
|
19
|
+
# @param template_name [String] name of template in app/audio_templates
|
20
|
+
# @param variables [Hash] instance variables to initiate template.
|
21
|
+
#
|
22
|
+
# @return [void]
|
23
|
+
def send_glued_audio(template_name, variables = {})
|
24
|
+
loader = RailsAudioGlue.loader
|
25
|
+
builder = RailsAudioGlue.builder
|
26
|
+
|
27
|
+
# Reset the cache in development so we don't need to restart the server
|
28
|
+
# to see changes in the glue template.
|
29
|
+
loader.reset_cache! if Rails.env.development?
|
30
|
+
|
31
|
+
template = loader.get(template_name).new(variables)
|
32
|
+
data = builder.build(template)
|
33
|
+
|
34
|
+
format = template.format
|
35
|
+
filename = "#{File.basename(template_name)}.#{format}"
|
36
|
+
mime_type = GLUE_MIME_TYPES[format]
|
37
|
+
|
38
|
+
send_data(data, :filename => filename, :type => mime_type)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails-audio_glue
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- TMX Credit
|
8
|
+
- Potapov Sergey
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-10-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: audio_glue
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.1.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.1.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rails
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>'
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '3.0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>'
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '3.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: bundler
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: jeweler
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.8.7
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.8.7
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: yard
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: guard-rspec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: sqlite3
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: pry
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: audio_glue-sox_adapter
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ~>
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.0.1
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ~>
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 0.0.1
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: metric_fu
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
description: Rails-AudioGlue is an audio template engine (aka ERB/HAML for sounds)
|
155
|
+
email:
|
156
|
+
- rubygems@tmxcredit.com
|
157
|
+
- blake131313@gmail.com
|
158
|
+
executables: []
|
159
|
+
extensions: []
|
160
|
+
extra_rdoc_files:
|
161
|
+
- LICENSE.txt
|
162
|
+
- README.markdown
|
163
|
+
files:
|
164
|
+
- LICENSE.txt
|
165
|
+
- README.markdown
|
166
|
+
- lib/generators/rails_audio_glue/install/USAGE
|
167
|
+
- lib/generators/rails_audio_glue/install/install_generator.rb
|
168
|
+
- lib/generators/rails_audio_glue/install/templates/audio_glue_helper.rb.erb
|
169
|
+
- lib/generators/rails_audio_glue/install/templates/initializer.rb.erb
|
170
|
+
- lib/generators/rails_audio_glue/template/USAGE
|
171
|
+
- lib/generators/rails_audio_glue/template/template_generator.rb
|
172
|
+
- lib/generators/rails_audio_glue/template/templates/template.glue.erb
|
173
|
+
- lib/rails-audio_glue.rb
|
174
|
+
- lib/rails_audio_glue.rb
|
175
|
+
- lib/rails_audio_glue/controller_methods.rb
|
176
|
+
- lib/rails_audio_glue/engine.rb
|
177
|
+
homepage: http://github.com/TMXCredit/rails-audio_glue
|
178
|
+
licenses:
|
179
|
+
- MIT
|
180
|
+
metadata: {}
|
181
|
+
post_install_message:
|
182
|
+
rdoc_options: []
|
183
|
+
require_paths:
|
184
|
+
- lib
|
185
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
requirements: []
|
196
|
+
rubyforge_project:
|
197
|
+
rubygems_version: 2.0.3
|
198
|
+
signing_key:
|
199
|
+
specification_version: 4
|
200
|
+
summary: AudioGlue plugin for Rails
|
201
|
+
test_files: []
|
202
|
+
has_rdoc:
|