aker-rails 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ Aker-Rails History
2
+ ==================
3
+
4
+ 2.0.2
5
+ -----
6
+
7
+ ### Development
8
+
9
+ - First open-source version.
10
+ - Project renamed from `bcsec-rails` to `aker-rails` to match the
11
+ renaming of the main project.
12
+ - Switch integration test suite from Celerity to Mechanize. (#3931)
13
+ This eliminates the JRuby dependency for integration testing.
14
+
15
+ Bcsec-Rails History
16
+ ===================
17
+
18
+ 2.0.1
19
+ -----
20
+
21
+ ### Fixed
22
+
23
+ - The bcsec middleware is no longer appended to the stack multiple
24
+ times when class reloading is active. (#4486)
25
+
26
+ ### Development
27
+
28
+ - Use bundler 1.0. (#3930)
29
+ - CI builds use most-recent-available gems for all dependencies,
30
+ including prerelease versions of bcsec. (#4422, #4427)
31
+
32
+ 2.0.0
33
+ -----
34
+
35
+ ### Features
36
+
37
+ - Package bcsec-rails as a gem
38
+ - Namespace everything under `Bcsec::Rails`
39
+
40
+ ### Development
41
+
42
+ - Full integrated test suite with cucumber, celerity, and a sample app
43
+ - Full API documentation
44
+ - Start tracking changes to the plugin
45
+ - Move to internal git repo
data/README.md ADDED
@@ -0,0 +1,151 @@
1
+ Aker-Rails
2
+ ===========
3
+
4
+ `aker-rails` is the Rails plugin for Aker 3.0 and later. It is a
5
+ thin wrapper around Aker's rack support.
6
+
7
+ There are separate plugins for Rails 3.x and Rails 2.3.x. You're
8
+ looking at the version for **Rails 2.3.x**. The version for Rails 3.x
9
+ has a version number with major version 3.
10
+
11
+ Setup
12
+ -----
13
+
14
+ ### Prerequisites
15
+
16
+ `aker-rails` requires Rails ~> 2.3.5.
17
+
18
+ Since `aker-rails` is just a thin wrapper, you'll want to be familiar
19
+ with [Aker][] before you get started.
20
+
21
+ [Aker]: http://rubydoc.info/github/NUBIC/aker/master/file/README.md
22
+
23
+ ### Get the gem
24
+
25
+ `aker-rails` is a gem plugin. In order to use it, either install the
26
+ gem at the system level or (better) include it in your bundler-using
27
+ application's Gemfile.
28
+
29
+ #### Okay
30
+
31
+ !!!plain
32
+ $ gem install aker-rails
33
+
34
+ #### Better
35
+
36
+ # in your Gemfile
37
+ gem 'aker-rails', '~> 2.0'
38
+
39
+ ### Add it to the application
40
+
41
+ Next, configure the gem into your Rails application's environment.
42
+ (This is necessary for gem plugins even if you are using bundler.)
43
+
44
+ # In config/environment.rb's initializer block
45
+ config.gem "aker-rails", :lib => 'aker/rails', :version => '~> 2.0'
46
+
47
+ ### Add an initializer for aker
48
+
49
+ Put your global configuration in an initializer. By _global
50
+ configuration_ I mean the parts that are the same no matter which
51
+ environment you are using, like the portal name and the modes. (N.b.:
52
+ You have to put it in an initializer — if you just put it at the
53
+ end of `config/environment.rb` it won't work.)
54
+
55
+ # In config/initializers/aker.rb
56
+ Aker.configure do
57
+ # The authentication protocol to use for interactive access.
58
+ # `:form` is the default.
59
+ ui_mode :form
60
+
61
+ # The authentication protocol(s) to use for non-interactive
62
+ # access. There is no default.
63
+ api_mode :http_basic
64
+
65
+ # The portal to which this application belongs. Optional.
66
+ portal :ENU
67
+ end
68
+
69
+ For more information on the configuration syntax and options, see the
70
+ aker API documentation for {Aker::Configuration}.
71
+
72
+ ### Add per-environment configurations
73
+
74
+ In the environment initializer for each of your application's
75
+ environments, put the parts of the Aker configuration which are
76
+ env-specific. E.g., the LDAP server you use in production might not be
77
+ visible from your workstation. This means that the `authorities` line
78
+ will be env-specific.
79
+
80
+ # In config/environments/production.rb, for example
81
+ config.after_initialize do
82
+ Aker.configure do
83
+ # The authorities to use. See the aker API documentation
84
+ # for `Aker::Authorities` for options.
85
+ authorities :ldap
86
+
87
+ # The server-central parameters file for authority
88
+ # and policy parameters (optional). See
89
+ # `Aker::CentralParameters` for a discussion of why this is a
90
+ # good idea.
91
+ central '/etc/nubic/aker-prod.yml'
92
+ end
93
+ end
94
+
95
+ Integration into your app
96
+ -------------------------
97
+
98
+ With the plugin installed, Aker provides a general infrastructure for
99
+ supporting authentication and authorization in your application. If
100
+ you want to _require_ authentication or authorization for particular
101
+ resources (and I think you do), you need to do a bit more
102
+ configuration.
103
+
104
+ ### Securing pages
105
+
106
+ In any controller which authentication is required, include
107
+ {Aker::Rails::SecuredController}. If authentication is required for
108
+ all controllers, you can include this module in
109
+ `ApplicationController`.
110
+
111
+ If you want to further require that all actions in a controller
112
+ require that the user be a member of a certain group, you can use the
113
+ {Aker::Rails::SecuredController::ClassMethods#permit permit} method:
114
+
115
+ class ManuscriptController < ActionController::Base
116
+ include Aker::Rails::SecuredController
117
+ permit :editor
118
+ end
119
+
120
+ ### Partial authorization
121
+
122
+ Aker also supports resources which are only partially limited to a
123
+ particular group or groups. The helper for this is also called
124
+ {Aker::Rails::Application#permit? permit}:
125
+
126
+ # In a controller action
127
+ class DashboardController < ActionController::Base
128
+ # ...
129
+ def index
130
+ if permit?(:editor)
131
+ @manuscripts = Manuscript.all
132
+ end
133
+ end
134
+ end
135
+
136
+ # Or in a view
137
+ <%= permit?(:editor) do %>
138
+ @manuscripts.collect { |m| m.title }.join(', ')
139
+ <% end %>
140
+
141
+ This permit helper is available to all controllers and views, not just
142
+ ones that mix in {Aker::Rails::SecuredController}. This means you
143
+ can have a publically-accessible page which has additional/different
144
+ content for a logged-in user.
145
+
146
+ ### The current user
147
+
148
+ Aker provides a method {Aker::Rails::Application#current_user
149
+ current_user} to all controllers and views. It will return a
150
+ {Aker::User} object for the current user, or `nil` if there isn't
151
+ one.
@@ -0,0 +1,60 @@
1
+ require 'aker/rails'
2
+
3
+ module Aker::Rails
4
+ ##
5
+ # A mixin for the rails application controller. Provides global
6
+ # aker integration, but does not enforce any authentication or
7
+ # authorization requirements. (See
8
+ # {Aker::Rails::SecuredController} for one way to enforce
9
+ # authentication and authorization.)
10
+ #
11
+ # This module is automatically mixed into the application controller
12
+ # when the plugin is initialized.
13
+ module Application
14
+ ##
15
+ # Sets up the aker global infrastructure and helpers in the
16
+ # application controller.
17
+ #
18
+ # @return [void]
19
+ def self.included(controller_class)
20
+ controller_class.class_eval do
21
+ helper_method :current_user, :permit?, :permit
22
+ end
23
+ end
24
+
25
+ ##
26
+ # Sets up the aker global infrastructure that is not affected by
27
+ # Rails' development-mode class reloading.
28
+ #
29
+ # @return [void]
30
+ def self.one_time_setup
31
+ Aker::Rack.use_in(ActionController::Dispatcher.middleware)
32
+ Rack::Request.send(:include, Aker::Rack::RequestExt)
33
+ end
34
+
35
+ ##
36
+ # Exposes the logged-in user (if any) to the application.
37
+ #
38
+ # This method is also available to views (i.e., it is a helper).
39
+ #
40
+ # @return [Aker::User,nil]
41
+ def current_user
42
+ request.env['aker.check'].user
43
+ end
44
+
45
+ ##
46
+ # Aids group-level authorization. It is safe to call this method
47
+ # without checking that there is a logged in user first.
48
+ #
49
+ # This method delegates directly to {Aker::Rack::Facade#permit?};
50
+ # see the documentation for that method for more information.
51
+ #
52
+ # This method is also available to views (i.e., it is a helper).
53
+ #
54
+ # @return [Boolean,Object,nil]
55
+ def permit?(*groups, &block)
56
+ request.env['aker.check'].permit?(*groups, &block)
57
+ end
58
+ alias :permit :permit?
59
+ end
60
+ end
@@ -0,0 +1,66 @@
1
+ require 'aker/rails'
2
+
3
+ module Aker::Rails
4
+ ##
5
+ # This mixin tags a controller as always requiring authentication.
6
+ #
7
+ # It also adds a
8
+ # {Aker::Rails::SecuredController::ClassMethods#permit method}
9
+ # which allows you to mark a controller as only accessible to a
10
+ # particular group or groups. For example:
11
+ #
12
+ # class SecretController
13
+ # include Aker::Rails::SecuredController
14
+ # permit :confidential
15
+ # end
16
+ module SecuredController
17
+ ##
18
+ # @private implements the behavior described by the module
19
+ # description
20
+ # @return [void]
21
+ def self.included(controller_class)
22
+ controller_class.before_filter :aker_authorize
23
+ controller_class.extend ClassMethods
24
+ end
25
+
26
+ ##
27
+ # The filter which actually forces any user accessing a controller
28
+ # which mixes this in to be authenticated.
29
+ #
30
+ # It delegates to {Aker::Rack::Facade#authentication_required!};
31
+ # see that method's documentation for more information.
32
+ #
33
+ # @return [void]
34
+ def aker_authorize
35
+ request.env['aker.check'].authentication_required!
36
+ end
37
+
38
+ ##
39
+ # Extensions for the rails controller DSL for
40
+ # authentication-required controllers.
41
+ #
42
+ # @see SecuredController
43
+ module ClassMethods
44
+ ##
45
+ # Tags a controller as requiring that a user both be
46
+ # authenticated and belong to one of a set of groups.
47
+ #
48
+ # It delegates to {Aker::Rack::Facade#permit!}; see that
49
+ # methods's documentation for more information.
50
+ #
51
+ # @return [void]
52
+ def permit(*groups)
53
+ options =
54
+ if Hash === groups.last
55
+ groups.pop
56
+ else
57
+ {}
58
+ end
59
+
60
+ before_filter(options) do |controller|
61
+ controller.request.env['aker.check'].permit!(*groups)
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. test))
2
+
3
+ ##
4
+ # Helpers for common test tasks.
5
+ #
6
+ # To use these helpers with a Rails application using RSpec:
7
+ #
8
+ # # spec/spec_helper.rb
9
+ # Spec::Runner.configure do |config|
10
+ # config.include Aker::Rails::Test::Helpers
11
+ # ...
12
+ # end
13
+ module Aker::Rails::Test::Helpers
14
+ include Aker::Test::Helpers
15
+
16
+ ##
17
+ # Logs in a user.
18
+ #
19
+ # Users can be identified by:
20
+ #
21
+ # * their username
22
+ # * building a `Aker::User` instance representing that user
23
+ # * the return value of
24
+ #
25
+ # Aker.authority.valid_credentials?(:user, username, password)
26
+ #
27
+ # (which is a `Aker::User`)
28
+ #
29
+ # @param [String, Aker::User] user a user's username or `Aker::User` object
30
+ def login_as(user)
31
+ request.env.merge!(login_env(user))
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. rails))
2
+
3
+ module Aker::Rails::Test
4
+ autoload :Helpers, 'aker/rails/test/helpers'
5
+ end
@@ -0,0 +1,7 @@
1
+ module Aker
2
+ module Rails
3
+ # VERSION is in a separate file with no external dependencies so it
4
+ # can be sourced from the gemspec.
5
+ VERSION = "2.0.2"
6
+ end
7
+ end
data/lib/aker/rails.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'aker'
2
+
3
+ module Aker
4
+ ##
5
+ # Rails integration for aker. In general, it is a thin wrapper
6
+ # around aker's rack integration.
7
+ #
8
+ # Everything in this module is in the `aker-rails` gem plugin.
9
+ module Rails
10
+ autoload :VERSION, 'aker/rails/version'
11
+
12
+ autoload :Application, 'aker/rails/application'
13
+ autoload :SecuredController, 'aker/rails/secured_controller'
14
+ autoload :Test, 'aker/rails/test'
15
+ end
16
+ end
data/rails/init.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'aker/rails'
2
+
3
+ Rails.logger.debug "Initializing aker-rails"
4
+ # We do this up here to allow the application to override if desired
5
+ Aker.configure {
6
+ logger Rails.logger
7
+ }
8
+ config.after_initialize do
9
+ Aker::Rails::Application.one_time_setup
10
+
11
+ if config.cache_classes
12
+ ApplicationController.send(:include, Aker::Rails::Application)
13
+ else
14
+ config.to_prepare do
15
+ ApplicationController.send(:include, Aker::Rails::Application)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,87 @@
1
+ require File.expand_path("../../../spec_helper", __FILE__)
2
+ require 'rack'
3
+ require 'action_controller'
4
+
5
+ module Aker::Rails
6
+ class FakeApplicationController
7
+ attr_accessor :request
8
+
9
+ def self.helper_method(*names)
10
+ helper_methods.concat(names)
11
+ end
12
+
13
+ def self.helper_methods
14
+ @helper_methods ||= []
15
+ end
16
+
17
+ Aker.configure { }
18
+ include Application
19
+ Aker.configuration = nil
20
+ end
21
+
22
+ describe Application do
23
+ before do
24
+ @controller = FakeApplicationController.new
25
+
26
+ @env = Rack::MockRequest.env_for('/')
27
+ @env['aker.check'] = (@aker = mock)
28
+ @controller.request = Rack::Request.new(@env)
29
+ end
30
+
31
+ it "adds current_user" do
32
+ @aker.should_receive(:user).and_return(Aker::User.new("jo"))
33
+
34
+ @controller.current_user.username.should == "jo"
35
+ end
36
+
37
+ it "defines current_user as a helper method" do
38
+ @controller.class.helper_methods.should include(:current_user)
39
+ end
40
+
41
+ describe "#permit?" do
42
+ it "delegates to the aker rack facade" do
43
+ @aker.should_receive(:permit?).with(:bar, :quux)
44
+
45
+ @controller.permit?(:bar, :quux)
46
+ end
47
+
48
+ it "passes a block to the aker rack facade, if present" do
49
+ @aker.should_receive(:permit?).with(:bar, :quux).and_yield
50
+
51
+ @controller.permit?(:bar, :quux) { 1 + 1 }.should == 2
52
+ end
53
+
54
+ it "is registered as a helper method" do
55
+ @controller.class.helper_methods.should include(:permit?)
56
+ end
57
+
58
+ describe "permit alias" do
59
+ it "exists" do
60
+ @aker.should_receive(:permit?).with(:bar, :baz)
61
+
62
+ @controller.permit(:bar, :baz)
63
+ end
64
+
65
+ it "is also registered as a helper method" do
66
+ @controller.class.helper_methods.should include(:permit)
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ describe Application, ".one_time_setup" do
73
+ before do
74
+ Aker.configure { }
75
+
76
+ Application.one_time_setup
77
+ end
78
+
79
+ after do
80
+ Aker.configuration = nil
81
+ end
82
+
83
+ it "adds the aker middleware to the action controller middleware stack" do
84
+ ActionController::Dispatcher.middleware.should include(Aker::Rack::Setup)
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,69 @@
1
+ require File.expand_path("../../../spec_helper", __FILE__)
2
+ require 'rack'
3
+
4
+ module Aker::Rails
5
+ class SomeController
6
+ attr_accessor :request
7
+
8
+ def initialize(request)
9
+ @request = request
10
+ end
11
+
12
+ def self.before_filter(*args, &block)
13
+ filter =
14
+ if block
15
+ block
16
+ else
17
+ args.shift
18
+ end
19
+ self.before_filters << [filter, *args]
20
+ end
21
+
22
+ def self.before_filters
23
+ @before_filters ||= []
24
+ end
25
+
26
+ include Aker::Rails::SecuredController
27
+ end
28
+
29
+ describe SecuredController do
30
+ before do
31
+ @request = Rack::Request.new(Rack::MockRequest.env_for("/some"))
32
+ @aker = (@request.env['aker.check'] = mock)
33
+ @controller = SomeController.new(@request)
34
+ end
35
+
36
+ describe "#aker_authorize" do
37
+ it "is registered as a filter" do
38
+ @controller.class.before_filters.should == [ [:aker_authorize] ]
39
+ end
40
+
41
+ it "invokes authentication_required on the aker rack facade" do
42
+ @aker.should_receive(:authentication_required!)
43
+ @controller.aker_authorize
44
+ end
45
+ end
46
+
47
+ describe ".permit" do
48
+ it "adds a filter" do
49
+ @controller.class.permit(:foo, :quux)
50
+ @controller.class.should have(2).before_filters
51
+ @controller.class.before_filters.last[0].class.should == Proc
52
+ end
53
+
54
+ describe "and options" do
55
+ it "passes options on to before_filter" do
56
+ @controller.class.permit(:foo, :quux, :only => :zamm)
57
+ @controller.class.before_filters.last[1].should == { :only => :zamm }
58
+ end
59
+
60
+ it "passes empty options if no options are specified" do
61
+ @controller.class.permit(:foo, :quux, :vom)
62
+ @controller.class.before_filters.last[1].should == {}
63
+ end
64
+ end
65
+ end
66
+
67
+ # filter behavior is further characterized in integrated tests
68
+ end
69
+ end
@@ -0,0 +1,40 @@
1
+ require File.expand_path("../../../../spec_helper", __FILE__)
2
+ require 'action_controller'
3
+ require 'action_controller/test_process'
4
+
5
+ module Aker::Rails::Test
6
+ describe Helpers do
7
+ before do
8
+ Aker.configure do
9
+ s = Aker::Authorities::Static.new
10
+
11
+ s.valid_credentials!(:user, "jo", "50-50")
12
+ authorities s
13
+ end
14
+
15
+ @test_case = Class.new do
16
+ include Aker::Rails::Test::Helpers
17
+
18
+ def request
19
+ @request ||= ActionController::TestRequest.new
20
+ end
21
+ end.new
22
+ end
23
+
24
+ describe "#login_as" do
25
+ it "logs in a user by username" do
26
+ @test_case.login_as("jo")
27
+
28
+ @test_case.request.env['aker.check'].user.username.should == "jo"
29
+ end
30
+
31
+ it "accepts Aker::User objects" do
32
+ user = Aker::User.new("jo")
33
+
34
+ @test_case.login_as(user)
35
+
36
+ @test_case.request.env['aker.check'].user.should == user
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path("../../spec_helper", __FILE__)
2
+
3
+ describe Aker::Rails do
4
+ describe "::VERSION" do
5
+ it "exists" do
6
+ lambda { Aker::Rails::VERSION }.should_not raise_error
7
+ end
8
+
9
+ it "has three or four dot-separated parts" do
10
+ Aker::Rails::VERSION.split('.').size.should be_between(3, 4)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,61 @@
1
+ module Aker::Rails
2
+ module Spec
3
+ # Copied from aker due to laziness. May want to separate out and
4
+ # share later.
5
+
6
+ class DeprecationMode
7
+ def self.use_in(spec_config)
8
+ spec_config.include DeprecationHelper
9
+
10
+ spec_config.before(:each) do
11
+ @original_deprecation_mode, Aker::Deprecation.mode =
12
+ Aker::Deprecation.mode, DeprecationMode.new
13
+ end
14
+
15
+ spec_config.after(:each) do
16
+ begin
17
+ Aker::Deprecation.mode.fail_if_any_very_obsolete
18
+ ensure
19
+ Aker::Deprecation.mode = @original_deprecation_mode
20
+ end
21
+ end
22
+ end
23
+
24
+ def messages
25
+ @messages ||= []
26
+ end
27
+
28
+ def report(level, message, version)
29
+ messages << { :level => level, :message => message, :version => version }
30
+ end
31
+
32
+ def reset
33
+ @messages = nil
34
+ end
35
+
36
+ def fail_if_any_very_obsolete
37
+ obs = messages.select { |m| very_obsolete?(m[:version]) }
38
+ unless obs.empty?
39
+ fail "Very obsolete code still present. Remove it and its specs.\n" <<
40
+ "- #{obs.collect { |o| o[:message] }.join("\n- ")}"
41
+ end
42
+ end
43
+
44
+ def very_obsolete?(version)
45
+ # "very obsolete" if it was deprecated at least two minor
46
+ # versions ago
47
+ major_minor(Aker::Rails::VERSION) - Rational(2, 10) >= major_minor(version)
48
+ end
49
+
50
+ def major_minor(version)
51
+ Rational(version.split('.')[0, 2].inject(0) { |s, i| s = s * 10 + i.to_i }, 10)
52
+ end
53
+ end
54
+
55
+ module DeprecationHelper
56
+ def deprecation_message(n=0)
57
+ (Aker::Deprecation.mode.messages[n] || {})[:message]
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,11 @@
1
+ require "spec"
2
+
3
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
4
+
5
+ require 'aker/rails'
6
+
7
+ require File.expand_path('../deprecation_helper', __FILE__)
8
+
9
+ Spec::Runner.configure do |config|
10
+ Aker::Rails::Spec::DeprecationMode.use_in(config)
11
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aker-rails
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
+ prerelease: false
6
+ segments:
7
+ - 2
8
+ - 0
9
+ - 2
10
+ version: 2.0.2
11
+ platform: ruby
12
+ authors:
13
+ - David Yip
14
+ - Rhett Sutphin
15
+ - Peter Nyberg
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2011-07-20 00:00:00 -05:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 2
32
+ - 3
33
+ - 5
34
+ version: 2.3.5
35
+ requirement: *id001
36
+ name: rails
37
+ prerelease: false
38
+ type: :runtime
39
+ - !ruby/object:Gem::Dependency
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 7
46
+ segments:
47
+ - 3
48
+ - 0
49
+ version: "3.0"
50
+ requirement: *id002
51
+ name: aker
52
+ prerelease: false
53
+ type: :runtime
54
+ description:
55
+ email: r-sutphin@northwestern.edu
56
+ executables: []
57
+
58
+ extensions: []
59
+
60
+ extra_rdoc_files: []
61
+
62
+ files:
63
+ - CHANGELOG.md
64
+ - README.md
65
+ - lib/aker/rails/application.rb
66
+ - lib/aker/rails/secured_controller.rb
67
+ - lib/aker/rails/test/helpers.rb
68
+ - lib/aker/rails/test.rb
69
+ - lib/aker/rails/version.rb
70
+ - lib/aker/rails.rb
71
+ - spec/aker/rails/application_spec.rb
72
+ - spec/aker/rails/secured_controller_spec.rb
73
+ - spec/aker/rails/test/helpers_spec.rb
74
+ - spec/aker/rails_spec.rb
75
+ - spec/deprecation_helper.rb
76
+ - spec/spec_helper.rb
77
+ - rails/init.rb
78
+ has_rdoc: true
79
+ homepage: https://github.com/NUBIC/aker-rails
80
+ licenses: []
81
+
82
+ post_install_message:
83
+ rdoc_options: []
84
+
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 3
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ requirements: []
106
+
107
+ rubyforge_project:
108
+ rubygems_version: 1.3.7
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: Easy Rails integration for the Aker security framework
112
+ test_files: []
113
+