
Security News
New Website “Is It Really FOSS?” Tracks Transparency in Open Source Distribution Models
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Rails A/B testing. One minute to install. One line to set up a new A/B test. One line to track conversion.
For usage notes, see: http://www.bingocardcreator.com/abingo
Installation instructions are below usage examples.
Key default features:
<% ab_test(@abingo_identity, "login_button", ["/images/button1.jpg", "/images/button2.jpg"]) do |button_file| %>
<%= img_tag(button_file, :alt => "Login!") %>
<% end %>
def register_new_user
#See what level of free points maximizes users' decision to buy replacement points.
@starter_points = ab_test(@abingo_identity, "new_user_free_points", [100, 200, 300])
end
def registration
if (ab_test(@abingo_identity, "send_welcome_email", :conversion => "purchase"))
#send the email, track to see if it later increases conversion to full version
end
end
def buy_new_points
#some business logic
@abingo_identity.bingo!("buy_new_points") #Either a conversion named with :conversion or a test name.
end
Thanks for signing up, dude! <% @abingo_identity.bingo!("signup_page_redesign") >
Abingo::Experiment.last.describe_result_in_words
=> "The best alternative you have is: [0], which had 130 conversions from 5000 participants (2.60%).
The other alternative was [1], which had 1800 conversions from 100000 participants (1.80%).
This difference is 99.9% likely to be statistically significant, which means you can be extremely
confident that it is the result of your alternatives actually mattering, rather than being due to
random chance. However, this doesn't say anything about how much the first alternative is really
likely to be better by."
ruby script/generate abingo_migration
rake db:migrate
#Somewhere in application.rb
before_filter :set_abingo_identity
def set_abingo_identity
if (session[:abingo_identity])
@abingo_identity = Abingo.identify(session[:abingo_identity])
else
@abingo_identity = Abingo.identify
session[:abingo_identity] = @abingo_identity.identity
end
end
You PROBABLY SHOULD use a persistent cache in case you need to restart your machine. This is an amazingly good use case for MemcacheDB, so if you want to try playing with that, Google it. (Sets up VERY easily on the newer Ubuntu distros.)
If you can't use a persistent cache, you're probably still OK if Memcached very rarely needs to be restarted. If the cache gets flushed, you will double-count entrants to a particular experiment and possibly double-count conversions, but that may not be the worse thing in the world.
A/Bingo defaults to using the same cache store as Rails. If you want to change it
#production.rb
Abingo.cache = ActiveSupport::Cache::MemCacheStore.new("cache.example.com:12345") #best if really memcacheDB
Copyright (c) 2009-2010 Patrick McKenzie, released under the MIT license
FAQs
Unknown package
We found that abingo demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.