Skip to content

Instantly share code, notes, and snippets.

View courtsimas's full-sized avatar
🏠
Building

Court Simas courtsimas

🏠
Building
View GitHub Profile
class DecencyValidator < ActiveModel::Validator
def validate(record)
I18n.locale = record.locale
record.errors[:base] = I18n.t(:bad_words_warning) if filter_body(record.body, I18n.t(:bad_words).split( /, */ ) ).present?
end
private
def filter_body( check_str = "", prohibited_words = [] )
return nil if check_str.blank? || prohibited_words.blank?
return check_str.downcase.gsub!(/[^a-z]/, " ").split(" ").uniq.map { |w| w if prohibited_words.include?( w ) }.compact!
////in questions#create action
if filter_profanity( @question.body, I18n.t(:bad_words).split( /, */ ) ).present?
redirect_to @question, :alert => I18n.t(:bad_words_warning) and return
end
///in the application controller
$number_h: 157px;
#money_amount span {
background-image: url(numbers.png);
background-repeat:no-repeat;
height:$number_h;
width:94px;
display:block;
float:none;
margin:0 auto;
def self.destroy_and_remove_events(params)
question = Question.find params[:question_id]
transaction do
answers_to_del, comments_to_del = [], []
answers = question.answers;
comments = []; answers.each {|a| comments << a.comments; answers_to_del << a.id}; comments.flatten!
comments.each{|c| comments_to_del = c.id}
TimelineEvent.delete_all(["subject_type = 'Answer' AND ( subject_id IN (?) )", answers_to_del.to_a.join(',')]) if answers_to_del.present?
TimelineEvent.delete_all(["subject_type = 'Comment' AND ( subject_id IN (?) )", comments_to_del.to_a.join(',')]) if comments_to_del.present?
TimelineEvent.delete_all(["subject_type = 'Question' AND ( subject_id = ? )", question.id])
if resource.state_is?("suspended")
scoped = Devise::Mapping.find_scope!(resource)
Devise.sign_out_all_scopes ? sign_out : sign_out(scoped)
flash[:alert] = "You're suspended!"
redirect_to root_path and return
end
if profile_route.nil? || !profile_route.respond_to?(profile.to_sym)
self.profile_route = {profile.to_sym => panda_video.encodings.find_by_profile_name('h264').url}
panda_url = profile.to_sym => panda_video.encodings.find_by_profile_name(profile).url
self.profile_route = {profile.to_sym => panda_url} if panda_url.present?
self.save
else profile_route.has_key?(profile.to_sym) && profile_route[profile.to_sym].blank?
self.update_attribute(profile_route[profile.to_sym], panda_video.encodings.find_by_profile_name(profile).url)
end
begin
SystemTimer.timeout_after(5, MyCustomTimeoutException) do
profile_pic = Koala::Facebook::GraphAPI.new.get_picture(fb_uid, :type => "large")
end
rescue MyCustomTimeoutException => e
ENV['BTS_HOST'] + "/images/missing.png"
end
def self.fetch_accounts(token)
results = nil
results = Gattica.new({ :token => token,
:profile_id => GoogleAnalytics.config[:profile_id],
:timeout => 500 }) if token.present?
if results.blank?
results = Gattica.new({ :email => GoogleAnalytics.config[:email],
:password => GoogleAnalytics.config[:password],
:profile_id => GoogleAnalytics.config[:profile_id],
:timeout => 500 })
describe "fetch_accounts" do
context "when token does not exist or is expired" do
it "returns the google analytics object from the api using creds in the yml" do
@ga = Gattica.stub_chain(:new, {:email => GoogleAnalytics.config[:email], :password => GoogleAnalytics.config[:password], :profile_id => GoogleAnalytics.config[:profile_id] }).and_return(:auth_token => "DQAAAN4AAABQD6mcU0By5D8asC_zHKAGsGHS8x6npk8Z2N8rnBJao2HsnKWYfZq4xhCudhnhi9rf5SxJ3hMjO3l5AJapphS0grTxKyD9ydtcEP-KXsyF50ptyoq9obtZ3Fxoz6iEYzbP9SiPmV5DOhZ3Qv-oYt9hvCNUOtUBi5mCQXUH-mtWEUhdi3-7CvK6vwusvfhW3_FgQoKX48HwSkf5EnWNTUeF28s6Xgra4jPvY")
Analytics.fetch_accounts(nil).should eq @ga
end
end
context "when token exists" do
it "returns the google analytics object from the api using the token" do
$(".editable_question").each(function(){
//setup editing of owned questions
var args = {data: function(value, settings) {
// Unescape HTML
var retval = value
.replace(/&amp;/gi, '&')
.replace(/&gt;/gi, '>')
.replace(/&lt;/gi, '<')
.replace(/&quot;/gi, "\"");
return retval;