airake 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +12 -7
- data/README.txt +18 -54
- data/app_generators/airake/airake_generator.rb +1 -2
- data/app_generators/airake/templates/README +21 -50
- data/app_generators/shared/Rakefile +1 -0
- data/app_generators/shared/airake.yml +1 -0
- data/app_generators/shared/application.mxml +2 -4
- data/app_generators/shared/descriptor_1.xml +57 -0
- data/app_generators/shared/test/Test-app.xml +4 -20
- data/html/app_generators.html +42 -0
- data/html/component_generators.html +43 -0
- data/html/copy_to_rubyforge.sh +1 -0
- data/html/index.html +130 -0
- data/html/resources.html +51 -0
- data/html/screen.css +105 -0
- data/html/tasks.html +64 -0
- data/lib/airake/commands/acompc.rb +7 -6
- data/lib/airake/commands/adl.rb +6 -5
- data/lib/airake/commands/adt.rb +27 -25
- data/lib/airake/commands/asdoc.rb +7 -6
- data/lib/airake/commands/base.rb +7 -0
- data/lib/airake/commands/fcsh.rb +25 -0
- data/lib/airake/commands/flash_player.rb +34 -0
- data/lib/airake/commands/mxmlc.rb +9 -8
- data/lib/airake/project.rb +24 -17
- data/lib/airake/tasks/air.rake +13 -2
- data/lib/airake/version.rb +1 -1
- data/test/test_airake.rb +17 -15
- data/test/test_runner.rb +17 -0
- metadata +17 -14
- data/app_generators/browsair/USAGE +0 -5
- data/app_generators/browsair/browsair_generator.rb +0 -95
- data/app_generators/browsair/templates/README +0 -11
- data/app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt +0 -15
- data/bin/browsair +0 -12
- data/test/test_browsair_generator.rb +0 -53
@@ -7,13 +7,14 @@ module Airake #:nodoc:
|
|
7
7
|
|
8
8
|
attr_reader :asdoc_path, :asdoc_extra_opts, :src_dirs, :lib_dir, :output_dir
|
9
9
|
|
10
|
-
#
|
10
|
+
# Create ASDOC command.
|
11
11
|
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
12
|
+
# ==== Options
|
13
|
+
# +asdoc_path+:: Path to asdoc, defaults to 'asdoc'
|
14
|
+
# +src_dirs+:: Paths to source (array), defaults to [ 'src' ]
|
15
|
+
# +lib_dir+:: Path to lib directory.
|
16
|
+
# +output_dir+:: Path to output directory, defaults to "doc/asdoc"
|
17
|
+
# +asdoc_extra_opts+:: Extra options for command line
|
17
18
|
#
|
18
19
|
def initialize(options = {})
|
19
20
|
with_options(options, { :asdoc_path => "asdoc", :output_dir => "doc/asdoc" })
|
data/lib/airake/commands/base.rb
CHANGED
@@ -51,6 +51,13 @@ module Airake #:nodoc:
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
def assert_not_blank(*instance_vars)
|
55
|
+
instance_vars.each do |var|
|
56
|
+
instance = instance_variable_get("@#{var}")
|
57
|
+
raise ArgumentError, "#{var} can't be blank" if instance.blank?
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
54
61
|
def library_paths(lib_dir)
|
55
62
|
if lib_dir and File.directory?(lib_dir)
|
56
63
|
Dir["#{lib_dir}/*"].collect { |f| escape(f) if File.directory?(f) }.compact
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Airake #:nodoc:
|
2
|
+
|
3
|
+
module Commands #:nodoc:
|
4
|
+
|
5
|
+
# Flex compiler shell.
|
6
|
+
#
|
7
|
+
# In progress, untested.
|
8
|
+
#
|
9
|
+
class FCSH < Base
|
10
|
+
|
11
|
+
def initialize(options = {})
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate
|
16
|
+
command = []
|
17
|
+
command << @swf_path
|
18
|
+
process(command)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Airake #:nodoc:
|
2
|
+
|
3
|
+
module Commands #:nodoc:
|
4
|
+
|
5
|
+
# Flash Player (standalone)
|
6
|
+
#
|
7
|
+
# In progress, untested.
|
8
|
+
#
|
9
|
+
class FlashPlayer < Base
|
10
|
+
|
11
|
+
attr_reader :swf_path
|
12
|
+
|
13
|
+
# Create Flash Player command.
|
14
|
+
#
|
15
|
+
# ==== Options
|
16
|
+
# +flash_player+:: Path to flash player, defaults to '/Applications/Flash Player.app/Contents/MacOS/Flash Player'
|
17
|
+
# +swf_path+:: Path to swf
|
18
|
+
#
|
19
|
+
def initialize(options = {})
|
20
|
+
with_options(options, { :flash_player => "/Applications/Flash Player.app/Contents/MacOS/Flash Player" })
|
21
|
+
end
|
22
|
+
|
23
|
+
# The flash player command
|
24
|
+
def generate
|
25
|
+
command = []
|
26
|
+
command << @swf_path
|
27
|
+
process(command)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -8,15 +8,16 @@ module Airake #:nodoc:
|
|
8
8
|
attr_reader :mxmlc_path, :mxmlc_extra_opts, :swf_path, :mxml_path, :lib_dir, :src_dirs, :debug
|
9
9
|
attr_reader :config_name
|
10
10
|
|
11
|
-
#
|
11
|
+
# Create MXMLC command.
|
12
12
|
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
13
|
+
# ==== Options
|
14
|
+
# +mxmlc_path+:: Path to flex compiler, defaults to 'mxmlc'
|
15
|
+
# +swf_path+:: Path to generated swf (required)
|
16
|
+
# +mxml_path+:: Path to mxml (required)
|
17
|
+
# +lib_dir+:: Path to lib directory. Will load swc files from here or source directories
|
18
|
+
# +src_dirs+:: Path to source directories (required)
|
19
|
+
# +config_name+:: Config name, like 'air'
|
20
|
+
# +mxmlc_extra_opts+:: Extra options to pass to compiler
|
20
21
|
#
|
21
22
|
def initialize(options = {})
|
22
23
|
assert_required(options, [ :swf_path, :mxml_path, :src_dirs ])
|
data/lib/airake/project.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Airake
|
2
2
|
|
3
|
-
#
|
4
3
|
# Project for AIR application
|
5
4
|
#
|
6
5
|
class Project
|
@@ -9,23 +8,31 @@ module Airake
|
|
9
8
|
attr_reader :mxml_path, :appxml_path, :air_path, :swf_path
|
10
9
|
attr_reader :debug, :assets, :certificate
|
11
10
|
|
12
|
-
#
|
11
|
+
# Create project.
|
13
12
|
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
13
|
+
# ==== Options:
|
14
|
+
# +env+: Environment, such as development, test, production. Defaults to ENV["AIRAKE_ENV"].
|
15
|
+
# +base_dir+: Base (project) directory. Defaults to ENV["AIRAKE_ROOT"]
|
16
|
+
# +options+: If nil, options are loaded from airake.yml in root. (All paths relative to base directory)
|
17
|
+
# - +mxml_path+: Path to the ProjectName.mxml
|
18
|
+
# - +appxml_path+: Path to application descriptor
|
19
|
+
# - +src_dirs+: Paths to source
|
20
|
+
# - +lib_dir+: Path to lib directory
|
21
|
+
# - +air_path+: Path to AIR file
|
22
|
+
# - +swf_path+: Path to SWF file
|
23
|
+
# - +debug+: "true" or "false"
|
24
|
+
# - +assets+: Path to assets
|
25
|
+
# - +certificate+: Path to certificate
|
26
26
|
#
|
27
|
-
#
|
28
|
-
#
|
27
|
+
# ==== More options:
|
28
|
+
# * mxmlc_path
|
29
|
+
# * adt_path
|
30
|
+
# * adl_path
|
31
|
+
# * asdoc_path
|
32
|
+
# * mxmlc_extra_opts
|
33
|
+
# * adt_extra_opts
|
34
|
+
# * adl_extra_opts
|
35
|
+
# * asdoc_extra_opts
|
29
36
|
#
|
30
37
|
def initialize(env = nil, base_dir = nil, options = nil)
|
31
38
|
|
@@ -96,7 +103,7 @@ module Airake
|
|
96
103
|
# ADT command for this project
|
97
104
|
def adt
|
98
105
|
options = { :air_path => @air_path, :appxml_path => @appxml_path, :swf_path => @swf_path,
|
99
|
-
:base_dir => @base_dir, :assets => @assets, :
|
106
|
+
:base_dir => @base_dir, :assets => @assets, :cert => @certificate, :adt_extra_opts => @adt_extra_opts,
|
100
107
|
:adt_path => @adt_path }
|
101
108
|
Airake::Commands::Adt.new(options)
|
102
109
|
end
|
data/lib/airake/tasks/air.rake
CHANGED
@@ -71,7 +71,7 @@ namespace :air do
|
|
71
71
|
print "Password: "
|
72
72
|
password = STDIN.gets.chomp!
|
73
73
|
|
74
|
-
Airake::Runner.run(project.adt, :
|
74
|
+
Airake::Runner.run(project.adt, :certificate, cn, pfx_file, key_type, password, optionals)
|
75
75
|
end
|
76
76
|
|
77
77
|
# Check certificate configuration for package task
|
@@ -94,7 +94,18 @@ namespace :air do
|
|
94
94
|
end
|
95
95
|
|
96
96
|
desc "Package"
|
97
|
-
task :package => [ :check_certificate, :compile, :package_only ] do
|
97
|
+
task :package => [ :check_certificate, :compile, :package_only ] do
|
98
|
+
|
99
|
+
if ENV["AIRAKE_ENV"] != "production"
|
100
|
+
puts <<-EOS
|
101
|
+
|
102
|
+
You packaged under the environment: #{ENV["AIRAKE_ENV"]}.
|
103
|
+
|
104
|
+
You might want to package by: AIRAKE_ENV=production rake air:package
|
105
|
+
|
106
|
+
EOS
|
107
|
+
end
|
108
|
+
end
|
98
109
|
|
99
110
|
desc "Package only"
|
100
111
|
task :package_only do
|
data/lib/airake/version.rb
CHANGED
data/test/test_airake.rb
CHANGED
@@ -6,26 +6,22 @@ class TestAirake < Test::Unit::TestCase
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def teardown
|
9
|
-
FileUtils.rm_rf("#{
|
10
|
-
FileUtils.rm_rf("#{
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_dir
|
14
|
-
File.dirname(__FILE__) + "/Test\\ App"
|
9
|
+
FileUtils.rm_rf("#{run_task_dir}/bin/*", :verbose => true)
|
10
|
+
FileUtils.rm_rf("#{run_task_dir}/doc", :verbose => true)
|
15
11
|
end
|
16
12
|
|
17
13
|
def run_task(run)
|
18
|
-
system("cd #{
|
19
|
-
end
|
14
|
+
system("cd #{run_task_dir}; rake #{run} --trace") || fail
|
15
|
+
end
|
20
16
|
|
17
|
+
def run_task_dir
|
18
|
+
File.dirname(__FILE__) + "/Test\\ App"
|
19
|
+
end
|
20
|
+
|
21
21
|
def test_adl
|
22
22
|
run_task("adl")
|
23
23
|
end
|
24
24
|
|
25
|
-
def test_acompc
|
26
|
-
run_task("acompc SOURCE=src OUTPUT=bin/Foo.swc PACKAGES=\"com.test\"")
|
27
|
-
end
|
28
|
-
|
29
25
|
def test_compile
|
30
26
|
run_task("compile")
|
31
27
|
end
|
@@ -38,6 +34,14 @@ class TestAirake < Test::Unit::TestCase
|
|
38
34
|
run_task("clean")
|
39
35
|
end
|
40
36
|
|
37
|
+
def test_docs
|
38
|
+
run_task("docs")
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_acompc
|
42
|
+
run_task("acompc SOURCE=src OUTPUT=bin/Foo.swc PACKAGES=\"com.test\"")
|
43
|
+
end
|
44
|
+
|
41
45
|
def test_package
|
42
46
|
puts <<-EOS
|
43
47
|
|
@@ -47,7 +51,5 @@ class TestAirake < Test::Unit::TestCase
|
|
47
51
|
run_task("package")
|
48
52
|
end
|
49
53
|
|
50
|
-
|
51
|
-
run_task("docs")
|
52
|
-
end
|
54
|
+
|
53
55
|
end
|
data/test/test_runner.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestRunner < Test::Unit::TestCase
|
4
|
+
|
5
|
+
|
6
|
+
def test_run
|
7
|
+
|
8
|
+
adt = Airake::Commands::Adt.new
|
9
|
+
|
10
|
+
cert = adt.certificate("cm", "test.pfx", "1024-RSA", "pass")
|
11
|
+
|
12
|
+
Airake::Runner.new(cert).run
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
platform:
|
4
|
+
version: 0.4.2
|
5
|
+
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriel Handford, Min Kim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-02-29 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -34,7 +34,6 @@ description: Tasks and generators for Adobe AIR apps
|
|
34
34
|
email: gabrielh@gmail.com
|
35
35
|
executables:
|
36
36
|
- airake
|
37
|
-
- browsair
|
38
37
|
extensions: []
|
39
38
|
|
40
39
|
extra_rdoc_files:
|
@@ -43,10 +42,10 @@ extra_rdoc_files:
|
|
43
42
|
- Manifest.txt
|
44
43
|
- Notes.txt
|
45
44
|
- README.txt
|
46
|
-
- app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt
|
47
45
|
files:
|
48
46
|
- History.txt
|
49
47
|
- License.txt
|
48
|
+
- MIT-LICENSE
|
50
49
|
- Manifest.txt
|
51
50
|
- Notes.txt
|
52
51
|
- README.txt
|
@@ -57,15 +56,12 @@ files:
|
|
57
56
|
- app_generators/airake/USAGE
|
58
57
|
- app_generators/airake/airake_generator.rb
|
59
58
|
- app_generators/airake/templates/README
|
60
|
-
- app_generators/browsair/USAGE
|
61
|
-
- app_generators/browsair/browsair_generator.rb
|
62
|
-
- app_generators/browsair/templates/README
|
63
59
|
- app_generators/shared/Rakefile
|
64
60
|
- app_generators/shared/airake.yml
|
65
61
|
- app_generators/shared/application.mxml
|
62
|
+
- app_generators/shared/descriptor_1.xml
|
66
63
|
- app_generators/shared/descriptor_M5.xml
|
67
64
|
- app_generators/shared/descriptor_M6.xml
|
68
|
-
- app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt
|
69
65
|
- app_generators/shared/icons/Web.png
|
70
66
|
- app_generators/shared/lib/corelib-08.30.2007.swc
|
71
67
|
- app_generators/shared/lib/flexunit-08.30.2007.swc
|
@@ -73,15 +69,23 @@ files:
|
|
73
69
|
- app_generators/shared/test/Test.mxml
|
74
70
|
- app_generators/shared/test/suite/AllTests.as
|
75
71
|
- bin/airake
|
76
|
-
- bin/browsair
|
77
72
|
- config/hoe.rb
|
78
73
|
- config/requirements.rb
|
74
|
+
- html/app_generators.html
|
75
|
+
- html/component_generators.html
|
76
|
+
- html/copy_to_rubyforge.sh
|
77
|
+
- html/index.html
|
78
|
+
- html/resources.html
|
79
|
+
- html/screen.css
|
80
|
+
- html/tasks.html
|
79
81
|
- lib/airake.rb
|
80
82
|
- lib/airake/commands/acompc.rb
|
81
83
|
- lib/airake/commands/adl.rb
|
82
84
|
- lib/airake/commands/adt.rb
|
83
85
|
- lib/airake/commands/asdoc.rb
|
84
86
|
- lib/airake/commands/base.rb
|
87
|
+
- lib/airake/commands/fcsh.rb
|
88
|
+
- lib/airake/commands/flash_player.rb
|
85
89
|
- lib/airake/commands/mxmlc.rb
|
86
90
|
- lib/airake/core_ext/blank.rb
|
87
91
|
- lib/airake/daemonize.rb
|
@@ -102,11 +106,10 @@ files:
|
|
102
106
|
- tasks/website.rake
|
103
107
|
- test/test_airake.rb
|
104
108
|
- test/test_airake_generator.rb
|
105
|
-
- test/test_browsair_generator.rb
|
106
109
|
- test/test_class_generator.rb
|
107
110
|
- test/test_generator_helper.rb
|
108
111
|
- test/test_helper.rb
|
109
|
-
-
|
112
|
+
- test/test_runner.rb
|
110
113
|
has_rdoc: true
|
111
114
|
homepage: http://airake.rubyforge.org
|
112
115
|
post_install_message:
|
@@ -130,14 +133,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
requirements: []
|
131
134
|
|
132
135
|
rubyforge_project: airake
|
133
|
-
rubygems_version: 0.
|
136
|
+
rubygems_version: 1.0.1
|
134
137
|
signing_key:
|
135
138
|
specification_version: 2
|
136
139
|
summary: Tasks and generators for Adobe AIR apps
|
137
140
|
test_files:
|
138
141
|
- test/test_airake.rb
|
139
142
|
- test/test_airake_generator.rb
|
140
|
-
- test/test_browsair_generator.rb
|
141
143
|
- test/test_class_generator.rb
|
142
144
|
- test/test_generator_helper.rb
|
143
145
|
- test/test_helper.rb
|
146
|
+
- test/test_runner.rb
|
@@ -1,95 +0,0 @@
|
|
1
|
-
class BrowsairGenerator < RubiGen::Base
|
2
|
-
|
3
|
-
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
4
|
-
Config::CONFIG['ruby_install_name'])
|
5
|
-
|
6
|
-
attr_reader :name, :app_name, :url, :title, :description, :icon_src_path, :show_buttons
|
7
|
-
|
8
|
-
def initialize(runtime_args, runtime_options = {})
|
9
|
-
super
|
10
|
-
usage if args.empty? || args.size < 2
|
11
|
-
@destination_root = File.expand_path(args.shift)
|
12
|
-
@name = base_name
|
13
|
-
@app_name = @name.gsub(/\s+/, "")
|
14
|
-
@url = args.shift
|
15
|
-
@title = "#{@name} - #{@url}"
|
16
|
-
@description = "AIR Browser for #{@url}"
|
17
|
-
@icon_src_path = File.expand_path(args.shift) unless args.empty?
|
18
|
-
extract_options
|
19
|
-
|
20
|
-
@source_root = File.join(File.dirname(__FILE__), "..", "shared")
|
21
|
-
end
|
22
|
-
|
23
|
-
def manifest
|
24
|
-
record do |m|
|
25
|
-
m.directory ""
|
26
|
-
|
27
|
-
# Root
|
28
|
-
m.file "../browsair/templates/README", "README"
|
29
|
-
m.template "Rakefile", "Rakefile"
|
30
|
-
|
31
|
-
# Bin
|
32
|
-
m.directory "bin"
|
33
|
-
|
34
|
-
# Lib
|
35
|
-
m.directory "lib"
|
36
|
-
m.file "lib/flexunit-08.30.2007.swc", "lib/flexunit-08.30.2007.swc"
|
37
|
-
|
38
|
-
# Test
|
39
|
-
m.directory "test"
|
40
|
-
m.file "test/Test-app.xml", "test/Test-app.xml"
|
41
|
-
m.file "test/Test.mxml", "test/Test.mxml"
|
42
|
-
m.directory "test/suite"
|
43
|
-
m.file "test/suite/AllTests.as", "test/suite/AllTests.as"
|
44
|
-
|
45
|
-
# Source
|
46
|
-
m.directory "src"
|
47
|
-
m.template "descriptor_M6.xml", "src/#{app_name}-app.xml"
|
48
|
-
m.template "application.mxml", "src/#{app_name}.mxml"
|
49
|
-
m.template "airake.yml", "airake.yml"
|
50
|
-
|
51
|
-
# Icons
|
52
|
-
if icon_src_path.blank?
|
53
|
-
m.directory "src/assets/app_icons"
|
54
|
-
m.file "icons/Web.png", "src/assets/app_icons/icon_128.png"
|
55
|
-
m.file "icons/MouseRunnerDotComGraphicsLicense.txt", "src/assets/app_icons/MouseRunnerDotComGraphicsLicense.txt"
|
56
|
-
else
|
57
|
-
icon_dest_path = destination_path("src/assets/app_icons/icon_128.png")
|
58
|
-
FileUtils.mkdir_p(destination_path("src/assets/app_icons"))
|
59
|
-
FileUtils.cp(icon_src_path, icon_dest_path)
|
60
|
-
end
|
61
|
-
|
62
|
-
m.dependency "install_rubigen_scripts", [destination_root, "air", "browsair"], :shebang => options[:shebang]
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
protected
|
69
|
-
def banner
|
70
|
-
<<-EOS
|
71
|
-
Create an AIR browser for a specific URL.
|
72
|
-
|
73
|
-
USAGE: #{spec.name} [path/to/Project] [http://the.url] [path/to/icon_128.png (optional)]
|
74
|
-
EOS
|
75
|
-
end
|
76
|
-
|
77
|
-
def add_options!(opts)
|
78
|
-
opts.separator ''
|
79
|
-
opts.separator 'Options:'
|
80
|
-
# For each option below, place the default
|
81
|
-
# at the top of the file next to "default_options"
|
82
|
-
# opts.on("-a", "--author=\"Your Name\"", String,
|
83
|
-
# "Some comment about this option",
|
84
|
-
# "Default: none") { |options[:author]| }
|
85
|
-
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
86
|
-
opts.on("-b", "--buttons", "Build with back/forward/home buttons")
|
87
|
-
end
|
88
|
-
|
89
|
-
def extract_options
|
90
|
-
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
91
|
-
# Templates can access these value via the attr_reader-generated methods, but not the
|
92
|
-
# raw instance variable value.
|
93
|
-
@show_buttons = options[:buttons]
|
94
|
-
end
|
95
|
-
end
|