eve 1.0.2 → 2.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.
- data/.gitignore +43 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +109 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +24 -3
- data/Rakefile +26 -117
- data/eve.gemspec +35 -0
- data/lib/eve.rb +5 -10
- data/lib/eve/api.rb +3 -1
- data/lib/eve/api/response/inspection.rb +1 -1
- data/lib/eve/api/response/rowsets.rb +1 -1
- data/lib/eve/dependencies.rb +42 -12
- data/lib/eve/deprecation.rb +3 -0
- data/lib/eve/javascript_helper.rb +196 -0
- data/lib/eve/trust.rb +1 -2
- data/lib/eve/trust/controller_helpers.rb +62 -66
- data/lib/eve/trust/igb_interface.rb +14 -10
- data/lib/eve/version.rb +8 -0
- data/spec/controllers/controller_helpers_spec.rb +91 -0
- data/spec/{lib/eve/helpers → helpers}/javascript_helper_spec.rb +2 -2
- data/spec/helpers/view_helper_spec.rb +7 -0
- data/spec/lib/eve/api/calls/eve/character_id_spec.rb +8 -8
- data/spec/lib/eve/api/calls/server_status_spec.rb +4 -0
- data/spec/lib/eve/api/request_spec.rb +1 -0
- data/spec/lib/eve/trust/igb_interface_spec.rb +5 -5
- data/spec/spec_helper.rb +42 -1
- data/spec/support/controllers/trust_controller.rb +18 -1
- data/spec/support/mock_api_helpers.rb +6 -1
- data/spec/support/views/trust/html_and_igb.html.erb +1 -0
- data/spec/support/views/trust/html_and_igb.igb.erb +1 -0
- data/spec/support/views/trust/html_only.html.erb +1 -0
- data/spec/support/views/trust/igb_only.igb.erb +1 -0
- metadata +226 -169
- data/Manifest.txt +0 -174
- data/PostInstall.txt +0 -6
- data/features/support/env.rb +0 -1
- data/lib/eve/core_extensions.rb +0 -3
- data/lib/eve/core_extensions/hash.rb +0 -51
- data/lib/eve/core_extensions/string.rb +0 -11
- data/lib/eve/helpers.rb +0 -12
- data/lib/eve/helpers/javascript_helper.rb +0 -198
- data/lib/eve/helpers/view_helper.rb +0 -13
- data/script/console +0 -10
- data/script/console.cmd +0 -1
- data/script/destroy +0 -14
- data/script/destroy.cmd +0 -1
- data/script/generate +0 -14
- data/script/generate.cmd +0 -1
- data/spec/lib/eve/helpers/view_helper_spec.rb +0 -12
- data/spec/lib/eve/trust/controller_helpers_spec.rb +0 -70
data/lib/eve/api.rb
CHANGED
@@ -217,7 +217,8 @@ module Eve
|
|
217
217
|
[@options[:includes]].flatten.each do |mod|
|
218
218
|
next unless mod
|
219
219
|
mod = mod.to_s unless mod.kind_of?(String)
|
220
|
-
|
220
|
+
mod = "::Eve::API::Services::#{mod.camelize}".constantize
|
221
|
+
eigenclass.send(:include, mod)
|
221
222
|
end
|
222
223
|
end
|
223
224
|
|
@@ -226,6 +227,7 @@ module Eve
|
|
226
227
|
next unless mod
|
227
228
|
instance_variable_set("@#{mod}", ::Eve::API.new(options.merge(:includes => mod, :submodules => nil)))
|
228
229
|
eigenclass.send(:attr_reader, mod)
|
230
|
+
eigenclass.send(:public, mod)
|
229
231
|
end
|
230
232
|
end
|
231
233
|
|
@@ -5,7 +5,7 @@ module Eve
|
|
5
5
|
def protected_instance_variables
|
6
6
|
(respond_to?(:content) && !content.blank? ? [] : ["@content"]) +
|
7
7
|
#(respond_to?(:rowsets) && !rowsets.empty? ? rowsets.collect { |r| "@#{r.name}" } : []) +
|
8
|
-
|
8
|
+
[:@rowsets, :@options, :@xml, :@columns, :@row, :@name]
|
9
9
|
end
|
10
10
|
|
11
11
|
def inspected_name
|
data/lib/eve/dependencies.rb
CHANGED
@@ -1,18 +1,48 @@
|
|
1
|
-
unless defined?(Gem)
|
2
|
-
require 'rubygems'
|
3
|
-
gem 'hpricot', '>= 0.8.2'
|
4
|
-
gem 'actionpack', '>= 2.3.5'
|
5
|
-
gem 'activesupport', '>= 2.3.5'
|
6
|
-
end
|
7
|
-
|
8
1
|
require 'net/http'
|
9
2
|
require 'hpricot'
|
10
3
|
require 'yaml'
|
11
|
-
require '
|
12
|
-
require 'action_controller'
|
13
|
-
require 'action_view'
|
4
|
+
require 'sc-core-ext'
|
14
5
|
|
15
6
|
gem_path = File.expand_path(File.dirname(__FILE__), "..")
|
16
7
|
$LOAD_PATH.unshift gem_path
|
17
|
-
|
18
|
-
|
8
|
+
|
9
|
+
module Eve
|
10
|
+
autoload :Errors, "eve/errors"
|
11
|
+
autoload :API, "eve/api"
|
12
|
+
autoload :Errors, "eve/errors"
|
13
|
+
autoload :JavascriptHelper, "eve/javascript_helper"
|
14
|
+
autoload :Trust, "eve/trust"
|
15
|
+
autoload :Version, "eve/version"
|
16
|
+
autoload :VERSION, "eve/version"
|
17
|
+
|
18
|
+
require 'eve/deprecation'
|
19
|
+
|
20
|
+
# Railtie for bootstrapping to Rails
|
21
|
+
begin
|
22
|
+
require 'rails'
|
23
|
+
# we just required Rails -- are these next 3 necessary?
|
24
|
+
require 'action_pack'
|
25
|
+
require 'action_controller'
|
26
|
+
require 'action_view'
|
27
|
+
|
28
|
+
class Railtie < Rails::Railtie
|
29
|
+
config.after_initialize do
|
30
|
+
if defined?(Mime::Type)
|
31
|
+
# *.igb.erb format
|
32
|
+
Mime::Type.register_alias "text/html", :eve
|
33
|
+
Mime::Type.register_alias "text/html", :igb
|
34
|
+
end
|
35
|
+
|
36
|
+
# controller extensions
|
37
|
+
ActionController::Base.send(:include, Eve::Trust::ControllerHelpers)
|
38
|
+
|
39
|
+
# view extensions
|
40
|
+
ActionView::Base.send(:delegate, :igb, :to => :controller)
|
41
|
+
ActionView::Base.send(:delegate, :igb?, :to => :igb)
|
42
|
+
ActionView::Base.send(:include, Eve::JavascriptHelper)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
rescue LoadError
|
46
|
+
# no rails? no problem.
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
module Eve
|
2
|
+
# In addition to the helpers listed below, this library also exposes the "igb" method as described in
|
3
|
+
# Eve::Trust.
|
4
|
+
module JavascriptHelper
|
5
|
+
# Returns the numeric type ID for a string, so you don't have to manage "magic numbers" in your application.
|
6
|
+
# The argument can be a string or a symbol, and is case insensitive. Underscores will be converted to spaces.
|
7
|
+
#
|
8
|
+
# Examples:
|
9
|
+
# type_id('alliance') # => 16159
|
10
|
+
# type_id('character') # => 1377
|
11
|
+
# type_id('corporation') # => 2
|
12
|
+
# type_id('constellation') # => 4
|
13
|
+
# type_id('region') # => 3
|
14
|
+
# type_id('Solar System') # => 5
|
15
|
+
# type_id(:solar_system) # => 5
|
16
|
+
# type_id(:station) # => 3867
|
17
|
+
#
|
18
|
+
def type_id(which)
|
19
|
+
which = which.to_s.humanize unless which.kind_of?(String)
|
20
|
+
which.downcase!
|
21
|
+
case which
|
22
|
+
when 'alliance' then 16159
|
23
|
+
when 'character' then 1377
|
24
|
+
when 'corporation' then 2
|
25
|
+
when 'constellation' then 4
|
26
|
+
when 'region' then 3
|
27
|
+
when 'solar system', 'solarsystem' then 5
|
28
|
+
when 'station' then 3867
|
29
|
+
else raise ArgumentError, "Unknown type: #{which}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Creates a hyperlink that results in opening the client's EVE mail inbox.
|
34
|
+
def link_to_evemail(text, *args)
|
35
|
+
link_to_function(text, "CCPEVE.openEveMail()", *args)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Creates a hyperlink that results in the "show info" dialog being displayed on the client's screen.
|
39
|
+
# If item_id is given, the show info window will open for that item.
|
40
|
+
#
|
41
|
+
# type_id (Number)
|
42
|
+
# Type ID of item to show info on.
|
43
|
+
# item_id (Number)
|
44
|
+
# Optional item ID of specific item of type type_id to show info on. This is required for specific types of
|
45
|
+
# items, such as solar systems, stations, regions, and constellations.
|
46
|
+
#
|
47
|
+
def link_to_info(text, type_id, item_id = nil, *args)
|
48
|
+
function = "CCPEVE.showInfo(#{type_id.inspect}"
|
49
|
+
function.concat ", #{item_id.inspect}" if item_id
|
50
|
+
function.concat ")"
|
51
|
+
link_to_function text, function, *args
|
52
|
+
end
|
53
|
+
|
54
|
+
# Creates a hyperlink that results in opening the preview window for type_id.
|
55
|
+
#
|
56
|
+
# type_id (Number)
|
57
|
+
# Type ID of item to preview.
|
58
|
+
#
|
59
|
+
def link_to_preview(text, type_id, *args)
|
60
|
+
link_to_function text, "CCPEVE.showPreview(#{type_id.inspect})", *args
|
61
|
+
end
|
62
|
+
|
63
|
+
# Creates a hyperlink that results in showing the route to the destination_id from the source_id.
|
64
|
+
# If source_id is not given, the source system is taken to be the system the user is currently in.
|
65
|
+
#
|
66
|
+
def link_to_route(text, destination_id, source_id = nil, *args)
|
67
|
+
function = "CCPEVE.showRouteTo(#{destination_id.inspect}"
|
68
|
+
function.concat ", #{source_id.inspect}" if source_id
|
69
|
+
function.concat ")"
|
70
|
+
link_to_function text, function, *args
|
71
|
+
end
|
72
|
+
|
73
|
+
# Creates a hyperlink that results in opening the map. If system_id is given, the map will focus on that system.
|
74
|
+
#
|
75
|
+
# system_id (Number)
|
76
|
+
# Optional ID of solar system to focus map on.
|
77
|
+
#
|
78
|
+
def link_to_map(text, system_id = nil, *args)
|
79
|
+
link_to_function text, "CCPEVE.showMap(#{system_id ? system_id.inspect : ''})", *args
|
80
|
+
end
|
81
|
+
|
82
|
+
# Creates a hyperlink that results in opening the fitting window and displays the fitting represented by fitting.
|
83
|
+
#
|
84
|
+
# fitting (String)
|
85
|
+
# A Ship DNA string.
|
86
|
+
#
|
87
|
+
# See http://wiki.eveonline.com/en/wiki/Ship_DNA for details
|
88
|
+
def link_to_fitting(text, ship_dna_string, *args)
|
89
|
+
link_to_function text, "CCPEVE.showFitting(#{ship_dna_string.inspect})", *args
|
90
|
+
end
|
91
|
+
|
92
|
+
# Creatse a hyperlink that results in opening the contract window and displaying the contract represented by the
|
93
|
+
# contract_id argument. Contracts are, however, assigned per-solar-system, and so a solar_system_id must also be
|
94
|
+
# provided.
|
95
|
+
#
|
96
|
+
# solar_system_id (Number)
|
97
|
+
# The ID number of the solar system in which the contract is located.
|
98
|
+
# contract_id (Number)
|
99
|
+
# The ID number of the contract to display.
|
100
|
+
def link_to_contract(text, solar_system_id, contract_id, *args)
|
101
|
+
link_to_function text, "CCPEVE.showContract(#{solar_system_id.inspect}, #{contract_id.inspect})", *args
|
102
|
+
end
|
103
|
+
|
104
|
+
# Creates a hyperlink which results in opening the market details window and displays the information about the
|
105
|
+
# item represented by type_id.
|
106
|
+
#
|
107
|
+
# typeID (Number)
|
108
|
+
# Type ID to display market details about
|
109
|
+
#
|
110
|
+
def link_to_market_details(text, type_id, *args)
|
111
|
+
link_to_function text, "CCPEVE.showMarketDetails(#{type_id.inspect})", *args
|
112
|
+
end
|
113
|
+
|
114
|
+
# Produces a hyperlink that will result in a pop-up a trust prompt in the client, allowing the user to either
|
115
|
+
# grant the trust request, ignore it, or always ignore trust requests from your site.
|
116
|
+
#
|
117
|
+
# trust_url (String)
|
118
|
+
# This is a fully-qualified domain name and path (e.g. http://wiki.eveonline.com/w/) to which your site would
|
119
|
+
# like the user to grant trust.
|
120
|
+
#
|
121
|
+
# The page will not be automatically refreshed if the user grants the trust request. Trust will take effect the
|
122
|
+
# next time the user refreshes the page, or navigates within the site.
|
123
|
+
#
|
124
|
+
# Note that trust_url is processed and only the protocol, domain and path will be used from it. If you supply a
|
125
|
+
# query string or anchor, they will be discarded. It is recommended that you primarily pass in only
|
126
|
+
# fully-qualified domain names without paths (e.g. http://wiki.eveonline.com instead of
|
127
|
+
# http://wiki.eveonline.com/w/index.php), as this avoids pestering the user for trust on every page.
|
128
|
+
#
|
129
|
+
def link_to_trust_request(text, trust_url = "http://#{request.host}/", *args)
|
130
|
+
trust_url = url_for(trust_url.merge(:only_path => false)) if trust_url.kind_of?(Hash)
|
131
|
+
link_to_function text, "CCPEVE.requestTrust(#{trust_url.inspect})", *args
|
132
|
+
end
|
133
|
+
|
134
|
+
# This will generate a method call that produces a pop-up a trust prompt in the client, allowing the user to
|
135
|
+
# either grant the trust request, ignore it, or always ignore trust requests from your site.
|
136
|
+
#
|
137
|
+
# trust_url (String)
|
138
|
+
# This is a fully-qualified domain name and path (e.g. http://wiki.eveonline.com/w/) to which your site would
|
139
|
+
# like the user to grant trust.
|
140
|
+
#
|
141
|
+
# The page will not be automatically refreshed if the user grants the trust request. Trust will take effect the
|
142
|
+
# next time the user refreshes the page, or navigates within the site.
|
143
|
+
#
|
144
|
+
# Note that trust_url is processed and only the protocol, domain and path will be used from it. If you supply a
|
145
|
+
# query string or anchor, they will be discarded. It is recommended that you primarily pass in only
|
146
|
+
# fully-qualified domain names without paths (e.g. http://wiki.eveonline.com instead of
|
147
|
+
# http://wiki.eveonline.com/w/index.php), as this avoids pestering the user for trust on every page.
|
148
|
+
#
|
149
|
+
def request_trust(trust_url = "http://#{request.host}/", *args)
|
150
|
+
trust_url = url_for(trust_url.merge(:only_path => false)) if trust_url.kind_of?(Hash)
|
151
|
+
javascript_tag "CCPEVE.requestTrust(#{trust_url.inspect});", *args
|
152
|
+
end
|
153
|
+
|
154
|
+
# Sets the client's autopilot destination to the specified solar system.
|
155
|
+
#
|
156
|
+
# solar_system_id (Number)
|
157
|
+
# The numerical identifier of the solar system to which you wish to set the client's autopilot destination.
|
158
|
+
#
|
159
|
+
# This method requires that the user grant Trust to the calling site.
|
160
|
+
def link_to_destination(text, solar_system_id, *args)
|
161
|
+
link_to_function text, "CCPEVE.setDestination(#{solar_system_id.inspect})", *args
|
162
|
+
end
|
163
|
+
|
164
|
+
# Adds the specified solar system to the end of the client's autopilot route. If the solar system is already in
|
165
|
+
# the route, no changes are made and the method fails silently.
|
166
|
+
#
|
167
|
+
# solar_system_id (Number)
|
168
|
+
# The numerical identifier of the solar system which you wish to append to the client's autopilot route.
|
169
|
+
#
|
170
|
+
# This method requires that the user grant Trust to the calling site.
|
171
|
+
def link_to_waypoint(text, solar_system_id, *args)
|
172
|
+
link_to_function text, "CCPEVE.addWaypoint(#{solar_system_id.inspect})", *args
|
173
|
+
end
|
174
|
+
|
175
|
+
# Causes the user to attempt to join the named channel. Normal channel access control rules apply. If the user is
|
176
|
+
# unable to join the channel, the method fails silently.
|
177
|
+
#
|
178
|
+
# channel_name (String)
|
179
|
+
# The name of the channel which the user will join.
|
180
|
+
#
|
181
|
+
# This method requires that the user grant Trust to the calling site.
|
182
|
+
def link_to_channel(text, channel_name, *args)
|
183
|
+
link_to_function text, "CCPEVE.joinChannel(#{channel_name.inspect})", *args
|
184
|
+
end
|
185
|
+
|
186
|
+
# Causes the user to subscribe to the named mailing list.
|
187
|
+
#
|
188
|
+
# mailing_list_name (String)
|
189
|
+
# The name of the mailing list which the user will join.
|
190
|
+
#
|
191
|
+
# This method requires that the user grant Trust to the calling site.
|
192
|
+
def link_to_mailing_list(text, mailing_list_name, *args)
|
193
|
+
link_to_function text, "CCPEVE.joinMailingList(#{mailing_list_name.inspect})", *args
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
data/lib/eve/trust.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
require 'eve/trust/mime_types'
|
2
1
|
require 'eve/trust/controller_helpers'
|
3
2
|
require 'eve/trust/igb_interface'
|
4
3
|
|
5
4
|
module Eve
|
6
5
|
# == Trust
|
7
6
|
# The primary purpose for the ActionController is to figure out which View should be rendered, and what data to send
|
8
|
-
# to that View. In keeping with this
|
7
|
+
# to that View. In keeping with this paradigm, a few helper methods have been added that allow you to establish
|
9
8
|
# trust with the In-Game Browser (IGB), which in turn provides access to more useful information such as the player's
|
10
9
|
# current location. To establish trust with a compatible browser, simply add one line to your controller:
|
11
10
|
#
|
@@ -1,83 +1,23 @@
|
|
1
1
|
module Eve
|
2
2
|
module Trust
|
3
3
|
module ControllerHelpers
|
4
|
-
|
5
|
-
|
6
|
-
class ::ActionController::Base
|
4
|
+
def self.included(base)
|
5
|
+
base.instance_eval do
|
7
6
|
hide_action :trust_message, :trust_message=, :detect_igb, :template_exists?,
|
8
7
|
:set_igb_or_default, :default_template_exists?, :mock_methods_for_testing!,
|
9
8
|
:igb, :igb?, :set_igb, :require_trust, :prefer_trust, :deliver_trust_message
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
class_attribute :trust_message
|
10
|
+
self.trust_message ||= "This web site is requesting your trust."
|
11
|
+
|
13
12
|
delegate :igb?, :to => :igb
|
14
|
-
attr_reader :igb
|
15
13
|
before_filter :detect_igb
|
16
14
|
|
17
|
-
def require_trust(trust_message = self.class.trust_message)
|
18
|
-
if igb? && !igb.trusted?
|
19
|
-
deliver_trust_message(trust_message)
|
20
|
-
return false
|
21
|
-
end
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
def prefer_trust(trust_message = self.class.trust_message)
|
26
|
-
if igb? && !igb.trusted?
|
27
|
-
deliver_trust_message(trust_message)
|
28
|
-
end
|
29
|
-
true
|
30
|
-
end
|
31
|
-
|
32
|
-
def deliver_trust_message(trust_message = self.class.trust_message)
|
33
|
-
trust_uri = "http://#{request.host}/"
|
34
|
-
head 'eve.trustme' => "#{trust_uri}::#{trust_message}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def detect_igb
|
38
|
-
@igb = Eve::Trust::IgbInterface.new(request)
|
39
|
-
mock_methods_for_testing! if request.headers['mock_methods']
|
40
|
-
if igb.igb?
|
41
|
-
set_igb_or_default
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def set_igb_or_default
|
46
|
-
if default_template_exists? :igb
|
47
|
-
set_igb
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def set_igb
|
52
|
-
request.format = :igb
|
53
|
-
end
|
54
|
-
|
55
|
-
def default_template_exists?(format = response.template.template_format)
|
56
|
-
template_exists?(default_template_name, format)
|
57
|
-
end
|
58
|
-
|
59
|
-
def template_exists?(template_name, format = response.template.template_format)
|
60
|
-
self.view_paths.find_template(template_name, format)
|
61
|
-
rescue ActionView::MissingTemplate, Errno::ENOENT
|
62
|
-
false
|
63
|
-
end
|
64
|
-
|
65
|
-
# a quick and dirty mocking solution. I should really make it better, but it works fine, and doesn't interfere
|
66
|
-
# with anything in prod, so I'll procrastinate a bit.
|
67
|
-
def mock_methods_for_testing! #:nodoc:
|
68
|
-
request.headers['mock_methods'].each do |method_name, return_value|
|
69
|
-
(class << self; self; end).instance_eval do
|
70
|
-
define_method(method_name) { |*not_used| return_value }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
15
|
class << self
|
76
16
|
def requires_trust(message = trust_message)
|
77
17
|
self.trust_message = message if message != trust_message
|
78
18
|
before_filter :require_trust
|
79
19
|
end
|
80
|
-
|
20
|
+
|
81
21
|
def prefers_trust(message = trust_message)
|
82
22
|
self.trust_message = message if message != trust_message
|
83
23
|
before_filter :prefer_trust
|
@@ -85,6 +25,62 @@ module Eve
|
|
85
25
|
end
|
86
26
|
end
|
87
27
|
end
|
28
|
+
|
29
|
+
def igb
|
30
|
+
@igb ||= Eve::Trust::IgbInterface.new(request)
|
31
|
+
end
|
32
|
+
|
33
|
+
def require_trust(trust_message = self.class.trust_message)
|
34
|
+
if igb? && !igb.trusted?
|
35
|
+
render :text => "<body onload=\"CCPEVE.requestTrust('http://#{request.host_with_port}')\">", :layout => false
|
36
|
+
end
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def prefer_trust(trust_message = self.class.trust_message)
|
41
|
+
if igb? && !igb.trusted?
|
42
|
+
deliver_trust_message(trust_message)
|
43
|
+
end
|
44
|
+
true
|
45
|
+
end
|
46
|
+
|
47
|
+
def deliver_trust_message(trust_message = self.class.trust_message)
|
48
|
+
trust_uri = "http://#{request.host_with_port}/"
|
49
|
+
headers['Eve.trustme'] = "#{trust_uri}::#{trust_message}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def detect_igb
|
53
|
+
if igb.igb?
|
54
|
+
set_igb_or_default
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def set_igb_or_default
|
59
|
+
if default_template_exists? :igb
|
60
|
+
set_igb
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def set_igb
|
65
|
+
request.format = :igb
|
66
|
+
igb
|
67
|
+
end
|
68
|
+
|
69
|
+
unless defined?(default_template_name)
|
70
|
+
def default_template_name
|
71
|
+
# FIXME: I didn't check how Rails3 actually decides which template to render --
|
72
|
+
# we should really follow the same rules so we don't break anything unintentionally.
|
73
|
+
action_name
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def default_template_exists?(format = request.format)
|
78
|
+
formats = lookup_context.formats
|
79
|
+
lookup_context.formats = [format]
|
80
|
+
lookup_context.exists?(default_template_name, controller_path)
|
81
|
+
ensure
|
82
|
+
lookup_context.formats = formats
|
83
|
+
end
|
88
84
|
end
|
89
85
|
end
|
90
86
|
end
|