# AdvertSelector Rails adserver tool for selecting a smaller subset of banners from all possible banners with differing banner placement combinations. Gem includes admin tools for handling banners in live environment. Includes basic targeting, viewcount, frequency etc setups. Good for deciding e.g. what height of header banner you will have during the initial requests without extra javascript calls to adserver. This helps to avoid problems of browser not knowing what size of banner there is and enables browser to render the whole page faster. [](http://travis-ci.org/holli/advert_selector) ## Features - selecting small subset of (advert) banners from multiple banners - banners can be also be any kind of widgets - defining banners - setting filters to banners in a rails friendly way - defining placements - setting conflicting placements - setting filters for placements - admin tools - editing everything - testing banners before setting it to live env - showing information in banner testing - showing error log if there is a problem in banner filters ## Install ``` in /gemfile gem 'advert_selector' # Run following # bundle # bundle exec rake railties:install:migrations # rake db:migrate in top of views/layouts/your_layout <% advert_selector_initialize(:all) %> and if you want testing info then at the bottom <%= advert_selector_force_test_infos %> set to somewhere in your layout e.g. <%= content_for :banner_header %> in config/routes mount AdvertSelector::Engine => "/advert_selector" test the admin tool in url http://localhost:3000/advert_selector/ If you have problems, try to install simple_form again by setting `gem simple_form` to .Gemfile. ``` ## Configuration ``` set extra_configuration in /config/initializers/advert_selector.rb AdvertSelector.default_banner_test_url = "http://yourdomain.com/?" self.default_time_zone = 'Helsinki' class AdminAccessToGemTools def self.admin_access(controller) if !controller.session[:admin_logged].blank? || Rails.env.development? return true else return false end end end AdvertSelector.admin_access_class = AdminAccessToGemTools ``` ## Targeting / Content / HelperItem All contents and targetings are done through HelperItem-model. ### For targeting define custom helpers alongside your normal viewhelpers. Start by name advert_selector. E.g ``` module AdvertSelectorHelper def advert_selector_targeting_gender?(helper_item) params[:gender] == helper_item.content end end And in banner define HelperItem with name 'targeting_age?' and content 'male'. After that the banner would be shown only with requests that has param[:gender]='male'. ``` ### For displaying banner content HelperItems that are tagged with content_for are used with content_for method in rails. E.g. HelperItem.name = :banner_header and then in your views you display results by <%= content_for :banner_header %> ## Inside Banners are read to ruby processes memory once every 10 minutes from sql database. Gem uses Rails.cache to cache viewcount of banners. Viewcount is updated to db once in a while. Remember that this is not the real viewcount that more advanced banner handling systems have. Bots e.g. will increase the viewcount number ## Some links you might also consider - http://www.openx.com/ - http://www.google.com/dfp/info/sb/index.html ## Support Submit suggestions or feature requests as a GitHub Issue or Pull Request. Remember to update tests. Tests are quite extensive. Check travis for what environments are supported http://travis-ci.org/#!/holli/advert_selector [](http://travis-ci.org/holli/advert_selector) ## Licence This project rocks and uses MIT-LICENSE.