social_stream-base 0.16.2 → 0.16.3
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/app/assets/stylesheets/cheesecake.css.scss +1 -0
- data/app/views/cheesecake/_cheesecake.html.erb +3 -0
- data/app/views/cheesecake/_index.html.erb +88 -41
- data/app/views/cheesecake/_sector_form.html.erb +12 -12
- data/lib/social_stream/base/version.rb +1 -1
- data/lib/social_stream/test_helpers/controllers.rb +19 -2
- data/lib/tasks/db/populate.rake +190 -165
- data/social_stream-base.gemspec +1 -1
- data/spec/controllers/posts_controller_spec.rb +19 -1
- metadata +67 -67
@@ -73,6 +73,9 @@ $(function(){
|
|
73
73
|
$("#sector_editor").data("hide")();
|
74
74
|
}
|
75
75
|
};
|
76
|
+
cheese.onSubsectorAdded = function(subsector){
|
77
|
+
$("#sector_editor").data("prepare")(subsector.getCheesecake(),subsector);
|
78
|
+
};
|
76
79
|
$("#contacts_filter_input").keyup(function(){
|
77
80
|
cheese.searchEngine.filter($("#contacts_filter_input").val());
|
78
81
|
//TODO: Make users unfiltered visible again
|
@@ -119,18 +119,20 @@
|
|
119
119
|
});
|
120
120
|
});
|
121
121
|
$("#sector_editor").data("hide", function(callback){
|
122
|
-
$("#sector_editor").stop().animate({width: 0},500
|
123
|
-
$(".add_subsector_clone").remove();
|
124
|
-
});
|
122
|
+
$("#sector_editor").stop().animate({width: 0},500);
|
125
123
|
$("#contacts_explorer").stop().animate({width: 300},500, function(){
|
126
124
|
if(callback) callback();
|
127
125
|
});
|
128
126
|
});
|
129
|
-
$("#sector_editor").data("prepare", function(cheese){
|
127
|
+
$("#sector_editor").data("prepare", function(cheese, newSubsector){
|
130
128
|
var sector = cheese.getFocusedSector();
|
131
|
-
var
|
132
|
-
|
129
|
+
var newIndex = -1;
|
130
|
+
if(newSubsector){
|
131
|
+
newIndex = newSubsector.getIndex();
|
132
|
+
}
|
133
133
|
if(sector){
|
134
|
+
var subsector_count = sector.subsectors.length;
|
135
|
+
var maxReached = (subsector_count==4);
|
134
136
|
$("#form_sector_name").val(sector.label);
|
135
137
|
$("#edited_sector_name").html(sector.label);
|
136
138
|
$("#form_sector_name").off("keyup");
|
@@ -138,44 +140,89 @@
|
|
138
140
|
$("#edited_sector_name").html($("#form_sector_name").val());
|
139
141
|
sector.changeLabel($("#form_sector_name").val());
|
140
142
|
});
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
if(
|
159
|
-
$("
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
$("
|
164
|
-
$("." + label_class).find(".positive_message").hide();
|
165
|
-
$("." + label_class).find(".negative_message").show();
|
143
|
+
if(maxReached){
|
144
|
+
$(".add_subsector").each(function(){
|
145
|
+
if($(this).is(':visible')){
|
146
|
+
$(this).slideToggle();
|
147
|
+
}
|
148
|
+
})
|
149
|
+
}
|
150
|
+
for(var i = 3; i >= 0; i--){
|
151
|
+
(function(){
|
152
|
+
var subsector = sector.subsectors[i];
|
153
|
+
var index = i;
|
154
|
+
var recentlyCreated = (newIndex != -1)&&(newIndex == index);
|
155
|
+
if(subsector){
|
156
|
+
if(!$("#subsector_" + i).is(':visible')){
|
157
|
+
$("#subsector_" + i).slideToggle();
|
158
|
+
}
|
159
|
+
if(recentlyCreated || ((newIndex == -1)&&(i == 0))){
|
160
|
+
if(!$("#subsector_" + i).find(".content").is(':visible')){
|
161
|
+
$("#subsector_" + i).find(".content").slideToggle();
|
162
|
+
}
|
163
|
+
}else{
|
164
|
+
if($("#subsector_" + i).find(".content").is(':visible')){
|
165
|
+
$("#subsector_" + i).find(".content").slideToggle();
|
166
166
|
}
|
167
167
|
}
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
if(!maxReached){
|
169
|
+
if(sector.subsectors[i+1]==undefined){
|
170
|
+
$("#add_subsector_" + (i+1)).off("click");
|
171
|
+
if(!$("#add_subsector_" + (i+1)).is(':visible')){
|
172
|
+
$("#add_subsector_" + (i+1)).slideToggle();
|
173
|
+
}
|
174
|
+
$("#add_subsector_" + (i+1)).on("click",function(){
|
175
|
+
cheese.addNewSubsector(index+1);
|
176
|
+
$(".subsector .content").each(function(){
|
177
|
+
if($(this).is(':visible')){
|
178
|
+
$(this).slideToggle();
|
179
|
+
}
|
180
|
+
});
|
181
|
+
});
|
182
|
+
}
|
183
|
+
$("#add_subsector_" + i).off("click");
|
184
|
+
if(!$("#add_subsector_" + i).is(':visible')){
|
185
|
+
$("#add_subsector_" + i).slideToggle();
|
186
|
+
}
|
187
|
+
$("#add_subsector_" + i).on("click",function(){
|
188
|
+
cheese.addNewSubsector(index);
|
189
|
+
$(".subsector .content").each(function(){
|
190
|
+
if($(this).is(':visible')){
|
191
|
+
$(this).slideToggle();
|
192
|
+
}
|
193
|
+
});
|
194
|
+
});
|
195
|
+
}
|
196
|
+
$("#form_subsector_name_" + i).val(subsector.label);
|
197
|
+
$("#edited_subsector_name_" + i).html(subsector.label);
|
198
|
+
$("#form_subsector_name_" + i).off("keyup");
|
199
|
+
$("#form_subsector_name_" + i).on("keyup", [i,subsector],function(event){
|
200
|
+
$("#edited_subsector_name_" + event.data[0]).html($("#form_subsector_name_" + event.data[0]).val());
|
201
|
+
event.data[1].changeLabel($("#form_subsector_name_" + event.data[0]).val());
|
202
|
+
});
|
203
|
+
$("#subsector_" + i).find(".permissions_field .permission").each(function(){
|
204
|
+
var permission_field = $(this);
|
205
|
+
var update_state = function(){
|
206
|
+
var label_class = permission_field.attr("id").replace("form_", "edited_");
|
207
|
+
if(permission_field.is(":checked")){
|
208
|
+
$("." + label_class).removeClass("negative").addClass("positive");
|
209
|
+
$("." + label_class).find(".negative_message").hide();
|
210
|
+
$("." + label_class).find(".positive_message").show();
|
211
|
+
}else{
|
212
|
+
$("." + label_class).removeClass("positive").addClass("negative");
|
213
|
+
$("." + label_class).find(".positive_message").hide();
|
214
|
+
$("." + label_class).find(".negative_message").show();
|
215
|
+
}
|
216
|
+
}
|
217
|
+
update_state();
|
218
|
+
permission_field.on("change",update_state);
|
219
|
+
});
|
220
|
+
}else{
|
221
|
+
$("#subsector_" + i).hide();
|
222
|
+
$("#add_subsector_" + i).off("click");
|
223
|
+
$("#add_subsector_" + i).hide();
|
176
224
|
}
|
177
|
-
|
178
|
-
}
|
225
|
+
})();
|
179
226
|
}
|
180
227
|
}
|
181
228
|
});
|
@@ -20,13 +20,8 @@
|
|
20
20
|
<div id="edited_sector_color_in"></div>
|
21
21
|
</div>
|
22
22
|
</div>
|
23
|
-
</div>
|
24
|
-
|
25
|
-
<div class="add_subsector">
|
26
|
-
+
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
<% for i in 0..3 do %>
|
23
|
+
</div>
|
24
|
+
<% 3.downto(0) do |i|%>
|
30
25
|
<div class="form_row less_padding">
|
31
26
|
<div class="subsector" id="subsector_<%= i %>">
|
32
27
|
<div class="title">
|
@@ -48,17 +43,17 @@
|
|
48
43
|
</div>
|
49
44
|
<div class="form_row less_padding">
|
50
45
|
<div class="form_field permissions_field">
|
51
|
-
<% default_permissions.each_with_index do |p,
|
46
|
+
<% default_permissions.each_with_index do |p, j| %>
|
52
47
|
<div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
|
53
|
-
<input id="form_subsector_<%=
|
54
|
-
<label for="form_subsector_<%=
|
48
|
+
<input id="form_subsector_<%= j %>_<%= dom_id p %>" class="permission <%= dom_id p %>" type="checkbox"/>
|
49
|
+
<label for="form_subsector_<%= j %>_<%= dom_id p %>"><%= p.description(:brief, :relation => "%RELATION_NAME%", :subject => current_subject) %></label>
|
55
50
|
<div class="clearfloat"></div>
|
56
51
|
</div>
|
57
52
|
<% end %>
|
58
53
|
</div>
|
59
54
|
<div class="permissions_explanation" style="display:none;">
|
60
|
-
<% default_permissions.each_with_index do |p,
|
61
|
-
<div class="permission <%= dom_id p %> positive edited_subsector_<%=
|
55
|
+
<% default_permissions.each_with_index do |p, j| %>
|
56
|
+
<div class="permission <%= dom_id p %> positive edited_subsector_<%= j %>_<%= dom_id p %>">
|
62
57
|
<div class="positive_message">
|
63
58
|
<%= p.description(:detailed, :relation => "%RELATION_NAME%", :subject => current_subject, :state => "positive") %>
|
64
59
|
</div>
|
@@ -72,6 +67,11 @@
|
|
72
67
|
</div>
|
73
68
|
</div>
|
74
69
|
</div>
|
70
|
+
<div class="form_row less_padding">
|
71
|
+
<div class="add_subsector" id="add_subsector_<%= i %>">
|
72
|
+
+
|
73
|
+
</div>
|
74
|
+
</div>
|
75
75
|
<% end %>
|
76
76
|
</div>
|
77
77
|
</form>
|
@@ -33,9 +33,7 @@ module SocialStream
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def model_assigned_to contact, relation_ids
|
36
|
-
model_attributes[:author_id] = contact.sender.id
|
37
36
|
model_attributes[:owner_id] = contact.receiver.id
|
38
|
-
model_attributes[:user_author_id] = contact.sender.id
|
39
37
|
model_attributes[:_relation_ids] = Array(relation_ids).map(&:id)
|
40
38
|
end
|
41
39
|
|
@@ -67,6 +65,25 @@ module SocialStream
|
|
67
65
|
end
|
68
66
|
end
|
69
67
|
|
68
|
+
shared_examples_for "Allow Reading" do
|
69
|
+
it "should read" do
|
70
|
+
get :show, :id => @current_model.to_param
|
71
|
+
|
72
|
+
response.should be_success
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
shared_examples_for "Deny Reading" do
|
77
|
+
it "should not read" do
|
78
|
+
begin
|
79
|
+
get :show, :id => @current_model.to_param
|
80
|
+
|
81
|
+
assert false
|
82
|
+
rescue CanCan::AccessDenied
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
70
87
|
shared_examples_for "Allow Updating" do
|
71
88
|
it "should update" do
|
72
89
|
put :update, updating_attributes
|
data/lib/tasks/db/populate.rake
CHANGED
@@ -7,73 +7,45 @@ namespace :db do
|
|
7
7
|
desc "Reload populate data"
|
8
8
|
task :reload => [ 'db:reset', :create ]
|
9
9
|
|
10
|
+
desc "Reload populate data for Cheesecake testing"
|
11
|
+
task :cheesecake => [ 'db:reset', :read_environment, :create_users, :create_groups, :create_cheesecake_ties, :create_avatars ]
|
12
|
+
|
10
13
|
desc "Create populate data"
|
11
|
-
task :create => :
|
14
|
+
task :create => [ :read_environment, :create_users, :create_groups, :create_ties, :create_posts, :create_messages, :create_avatars ]
|
15
|
+
|
16
|
+
desc "INTERNAL: read needed environment data and setup variables"
|
17
|
+
task :read_environment => :environment do
|
12
18
|
require 'forgery'
|
13
19
|
|
14
|
-
LOGOS_PATH = File.join(Rails.root, 'lib', 'logos')
|
15
|
-
LOGOS_TOTAL = (ENV["LOGOS_TOTAL"] || 10).to_i
|
16
|
-
USERS = (ENV["USERS"] || 9).to_i
|
17
|
-
GROUPS = (ENV["GROUPS"] || 10).to_i
|
18
|
-
CHEESECAKE = (ENV["CHEESECAKE"].present? || false)
|
19
|
-
if CHEESECAKE
|
20
|
-
puts "Cheesecake Testing mode: ON"
|
21
|
-
end
|
20
|
+
@LOGOS_PATH = File.join(Rails.root, 'lib', 'logos')
|
21
|
+
@LOGOS_TOTAL = (ENV["LOGOS_TOTAL"] || 10).to_i
|
22
|
+
@USERS = (ENV["USERS"] || 9).to_i
|
23
|
+
@GROUPS = (ENV["GROUPS"] || 10).to_i
|
22
24
|
if ENV["HARDCORE"].present?
|
23
|
-
USERS = 999
|
24
|
-
GROUPS = 1000
|
25
|
+
@USERS = 999
|
26
|
+
@GROUPS = 1000
|
25
27
|
puts "Hardcore mode: ON (May the Force be with you brave Padawan)"
|
26
|
-
if CHEESECAKE
|
27
|
-
puts "WARNING: Hardcore and Cheesecake Modes activated. This situation is really slow. Please, avoid it."
|
28
|
-
end
|
29
28
|
end
|
30
|
-
if USERS < 9
|
31
|
-
USERS = 9
|
29
|
+
if @USERS < 9
|
30
|
+
@USERS = 9
|
32
31
|
puts "WARNING: There should be at least 10 users (Demo user and 9 more). Changing USERS to 9."
|
33
32
|
end
|
34
|
-
if GROUPS < 10
|
35
|
-
GROUPS = 10
|
33
|
+
if @GROUPS < 10
|
34
|
+
@GROUPS = 10
|
36
35
|
puts "WARNING: There should be at least 10 groups. Changing GROUPS to 10."
|
37
36
|
end
|
38
37
|
|
39
38
|
Mailboxer.setup do |config|
|
40
39
|
config.uses_emails = false
|
41
40
|
end
|
41
|
+
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ rand(LOGOS_TOTAL) + 1 }.*")].first
|
48
|
-
else
|
49
|
-
logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
|
50
|
-
avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
|
51
|
-
end
|
52
|
-
|
53
|
-
if avatar.present? && File.exists?(avatar)
|
54
|
-
Avatar.copy_to_temp_file(avatar)
|
55
|
-
dimensions = Avatar.get_image_dimensions(avatar)
|
56
|
-
l = Avatar.new(:actor => i.actor,:logo => File.open(avatar), :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
|
57
|
-
l.active = true
|
58
|
-
l.save!
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def set_tags(klass)
|
64
|
-
klass.all.each do |el|
|
65
|
-
el.tag_list = Forgery::LoremIpsum.words(1,:random => true)+", "+
|
66
|
-
Forgery::LoremIpsum.words(1,:random => true)+", "+
|
67
|
-
Forgery::LoremIpsum.words(1,:random => true)
|
68
|
-
el.save!
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
puts 'User population (Demo and ' + USERS.to_s + ' users more)'
|
43
|
+
# USERS
|
44
|
+
desc "Create users"
|
45
|
+
task :create_users => :read_environment do
|
46
|
+
puts 'User population (Demo and ' + @USERS.to_s + ' users more)'
|
73
47
|
users_start = Time.now
|
74
48
|
|
75
|
-
# = Users
|
76
|
-
|
77
49
|
# Create demo user if not present
|
78
50
|
if User.find_by_name('demo').blank?
|
79
51
|
User.create! :name => 'Demo',
|
@@ -82,27 +54,39 @@ namespace :db do
|
|
82
54
|
:password_confirmation => 'demonstration'
|
83
55
|
end
|
84
56
|
|
85
|
-
|
86
|
-
|
87
|
-
USERS.times do
|
57
|
+
@USERS.times do
|
88
58
|
User.create! :name => Forgery::Name.full_name,
|
89
59
|
:email => Forgery::Internet.email_address,
|
90
60
|
:password => 'demonstration',
|
91
61
|
:password_confirmation => 'demonstration'
|
92
62
|
end
|
93
63
|
|
64
|
+
# Reload actors to include new users
|
65
|
+
@available_actors = Actor.all
|
94
66
|
|
95
67
|
users_end = Time.now
|
96
68
|
puts ' -> ' + (users_end - users_start).round(4).to_s + 's'
|
69
|
+
end
|
70
|
+
|
97
71
|
|
98
|
-
|
72
|
+
# GROUPS
|
73
|
+
desc "Create groups"
|
74
|
+
task :create_groups => :read_environment do
|
75
|
+
puts 'Groups population (' + @GROUPS.to_s + ' groups)'
|
99
76
|
groups_start = Time.now
|
100
77
|
|
101
|
-
|
102
|
-
|
78
|
+
def set_tags(klass)
|
79
|
+
klass.all.each do |el|
|
80
|
+
el.tag_list = Forgery::LoremIpsum.words(1,:random => true)+", "+
|
81
|
+
Forgery::LoremIpsum.words(1,:random => true)+", "+
|
82
|
+
Forgery::LoremIpsum.words(1,:random => true)
|
83
|
+
el.save!
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
103
87
|
|
104
|
-
GROUPS.times do
|
105
|
-
founder = available_actors[rand(available_actors.size)]
|
88
|
+
@GROUPS.times do
|
89
|
+
founder = @available_actors[rand(@available_actors.size)]
|
106
90
|
|
107
91
|
Group.create! :name => Forgery::Name.company_name,
|
108
92
|
:email => Forgery::Internet.email_address,
|
@@ -112,147 +96,188 @@ namespace :db do
|
|
112
96
|
|
113
97
|
set_tags(Group)
|
114
98
|
|
99
|
+
# Reload actors to include groups
|
100
|
+
@available_actors = Actor.all
|
101
|
+
|
115
102
|
groups_end = Time.now
|
116
103
|
puts ' -> ' + (groups_end - groups_start).round(4).to_s + 's'
|
104
|
+
end
|
117
105
|
|
118
106
|
|
107
|
+
# TIES
|
108
|
+
desc "Create ties"
|
109
|
+
task :create_ties => :read_environment do
|
119
110
|
puts 'Ties population'
|
120
111
|
ties_start = Time.now
|
121
112
|
|
122
|
-
|
123
|
-
|
113
|
+
@available_actors.each do |a|
|
114
|
+
actors = @available_actors.dup - Array(a)
|
115
|
+
relations = a.relation_customs + Array.wrap(Relation::Reject.instance)
|
116
|
+
break if actors.size==0
|
117
|
+
Forgery::Basic.number(:at_most => actors.size).times do
|
118
|
+
actor = actors.delete_at((rand * actors.size).to_i)
|
119
|
+
contact = a.contact_to!(actor)
|
120
|
+
contact.user_author = a.user_author if a.subject_type != "User"
|
121
|
+
contact.relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
ties_end = Time.now
|
126
|
+
puts ' -> ' + (ties_end - ties_start).round(4).to_s + 's'
|
127
|
+
end
|
124
128
|
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
|
130
|
+
# TIES, special version for cheesecake testing
|
131
|
+
desc "Create cheesecake ties"
|
132
|
+
task :create_cheesecake_ties => :read_environment do
|
133
|
+
puts 'Ties population (Cheesecake version)'
|
134
|
+
ties_start = Time.now
|
135
|
+
|
136
|
+
@available_actors.each do |a|
|
137
|
+
actors = @available_actors.dup - Array(a)
|
128
138
|
relations = a.relation_customs + Array.wrap(Relation::Reject.instance)
|
129
|
-
break if actors.size==0
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
contact.relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
|
142
|
-
end
|
143
|
-
else
|
144
|
-
Forgery::Basic.number(:at_most => actors.size).times do
|
145
|
-
actor = actors.delete_at((rand * actors.size).to_i)
|
146
|
-
contact = a.contact_to!(actor)
|
147
|
-
contact.user_author = a.user_author if a.subject_type != "User"
|
148
|
-
contact.relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
|
149
|
-
end
|
139
|
+
break if actors.size==0
|
140
|
+
actor = Actor.first
|
141
|
+
unless a==actor
|
142
|
+
puts a.name + " connecting with " + actor.name
|
143
|
+
# DRY! :-S
|
144
|
+
contact = a.contact_to!(actor)
|
145
|
+
contact.user_author = a.user_author if a.subject_type != "User"
|
146
|
+
contact.relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
|
147
|
+
|
148
|
+
contact = actor.contact_to!(a)
|
149
|
+
contact.user_author = actor.user_author if actor.subject_type != "User"
|
150
|
+
contact.relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
|
150
151
|
end
|
151
152
|
end
|
152
153
|
|
153
154
|
ties_end = Time.now
|
154
155
|
puts ' -> ' + (ties_end - ties_start).round(4).to_s + 's'
|
156
|
+
end
|
155
157
|
|
156
|
-
|
158
|
+
|
159
|
+
# POSTS
|
160
|
+
desc "Create posts"
|
161
|
+
task :create_posts => :read_environment do
|
157
162
|
puts 'Post population'
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
:updated_at => p.updated_at)
|
179
|
-
end
|
180
|
-
|
181
|
-
posts_end = Time.now
|
182
|
-
puts ' -> ' + (posts_end - posts_start).round(4).to_s + 's'
|
183
|
-
else
|
184
|
-
puts ' -> Cheesecake Testing Mode. Avoiding Post Population.'
|
163
|
+
posts_start = Time.now
|
164
|
+
|
165
|
+
SocialStream::Populate.power_law(Tie.all) do |t|
|
166
|
+
updated = Time.at(rand(Time.now.to_i))
|
167
|
+
|
168
|
+
author = t.sender
|
169
|
+
owner = t.receiver
|
170
|
+
user_author = ( t.sender.subject_type == "User" ? t.sender : t.sender.user_author )
|
171
|
+
|
172
|
+
p = Post.create :text =>
|
173
|
+
"This post sActorhould be for #{ t.relation.name } of #{ t.sender.name }.\n#{ Forgery::LoremIpsum.paragraph(:random => true) }",
|
174
|
+
:created_at => Time.at(rand(updated.to_i)),
|
175
|
+
:updated_at => updated,
|
176
|
+
:author_id => author.id,
|
177
|
+
:owner_id => owner.id,
|
178
|
+
:user_author_id => user_author.id,
|
179
|
+
:_relation_ids => Array(t.relation_id)
|
180
|
+
|
181
|
+
p.post_activity.update_attributes(:created_at => p.created_at,
|
182
|
+
:updated_at => p.updated_at)
|
185
183
|
end
|
186
184
|
|
187
|
-
|
185
|
+
posts_end = Time.now
|
186
|
+
puts ' -> ' + (posts_end - posts_start).round(4).to_s + 's'
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
# MESSAGES
|
191
|
+
desc "Create messages using mailboxer"
|
192
|
+
task :create_messages => :read_environment do
|
188
193
|
puts 'Mailboxer population'
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
available_actors.
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
if (demo
|
214
|
-
|
215
|
-
|
194
|
+
mailboxer_start = Time.now
|
195
|
+
@available_actors = Actor.all
|
196
|
+
|
197
|
+
@available_actors.each do |a|
|
198
|
+
actors = @available_actors.dup - Array(a)
|
199
|
+
|
200
|
+
mult_recp = actors.uniq
|
201
|
+
if (demo = User.find_by_name('demo')) and !mult_recp.include? Actor.normalize(demo)
|
202
|
+
mult_recp << Actor.normalize(demo)
|
203
|
+
end
|
204
|
+
actor = mult_recp[(rand * mult_recp.size).to_i]
|
205
|
+
mult_recp.delete(actor)
|
206
|
+
mail = actor.send_message(mult_recp, "Hello all, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
|
207
|
+
actor = mult_recp[(rand * mult_recp.size).to_i]
|
208
|
+
mail = actor.reply_to_all(mail, "Well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
209
|
+
actor = mult_recp[(rand * mult_recp.size).to_i]
|
210
|
+
mail = actor.reply_to_all(mail, "Ok, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
211
|
+
actor = mult_recp[(rand * mult_recp.size).to_i]
|
212
|
+
mail = actor.reply_to_all(mail, "Pretty well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
213
|
+
actor = mult_recp[(rand * mult_recp.size).to_i]
|
214
|
+
actor.reply_to_all(mail, "Finally, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
215
|
+
|
216
|
+
|
217
|
+
if (demo = User.find_by_name('demo'))
|
218
|
+
next if Actor.normalize(demo)==Actor.normalize(a)
|
219
|
+
mail = a.send_message(demo, "Hello, #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
|
220
|
+
if rand > 0.5
|
221
|
+
mail = demo.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
216
222
|
if rand > 0.5
|
217
|
-
|
218
|
-
if rand > 0.5
|
219
|
-
a.reply_to_sender(mail, "Ok #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
220
|
-
end
|
221
|
-
end
|
222
|
-
if rand > 0.75
|
223
|
-
mail.conversation.move_to_trash(demo)
|
223
|
+
a.reply_to_sender(mail, "Ok #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
224
224
|
end
|
225
225
|
end
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
226
|
+
if rand > 0.75
|
227
|
+
mail.conversation.move_to_trash(demo)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
Forgery::Basic.number(:at_most => actors.size).times do
|
232
|
+
actor = actors.delete_at((rand * actors.size).to_i)
|
233
|
+
next if Actor.normalize(actor)==Actor.normalize(a)
|
234
|
+
mail = a.send_message(actor, "Hello, #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
|
235
|
+
if rand > 0.5
|
236
|
+
mail = actor.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
231
237
|
if rand > 0.5
|
232
|
-
|
233
|
-
if rand > 0.5
|
234
|
-
a.reply_to_sender(mail, "Ok #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
235
|
-
end
|
236
|
-
end
|
237
|
-
if rand > 0.75
|
238
|
-
mail.conversation.move_to_trash(actor)
|
238
|
+
a.reply_to_sender(mail, "Ok #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
|
239
239
|
end
|
240
240
|
end
|
241
|
+
if rand > 0.75
|
242
|
+
mail.conversation.move_to_trash(actor)
|
243
|
+
end
|
241
244
|
end
|
242
|
-
|
243
|
-
mailboxer_end = Time.now
|
244
|
-
puts ' -> ' + (mailboxer_end - mailboxer_start).round(4).to_s + 's'
|
245
|
-
else
|
246
|
-
puts ' -> Cheesecake Testing Mode. Avoiding Mailboxer Population.'
|
247
245
|
end
|
248
246
|
|
247
|
+
mailboxer_end = Time.now
|
248
|
+
puts ' -> ' + (mailboxer_end - mailboxer_start).round(4).to_s + 's'
|
249
|
+
|
250
|
+
end
|
251
|
+
|
252
|
+
|
253
|
+
# AVATARS
|
254
|
+
desc "Create avatars"
|
255
|
+
task :create_avatars => :read_environment do
|
256
|
+
def set_logos(klass)
|
257
|
+
klass.all.each do |i|
|
258
|
+
if @LOGOS_TOTAL
|
259
|
+
logo = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ rand(@LOGOS_TOTAL) + 1 }.*")].first
|
260
|
+
avatar = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ rand(@LOGOS_TOTAL) + 1 }.*")].first
|
261
|
+
else
|
262
|
+
logo = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
|
263
|
+
avatar = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
|
264
|
+
end
|
265
|
+
|
266
|
+
if avatar.present? && File.exists?(avatar)
|
267
|
+
Avatar.copy_to_temp_file(avatar)
|
268
|
+
dimensions = Avatar.get_image_dimensions(avatar)
|
269
|
+
l = Avatar.new(:actor => i.actor,:logo => File.open(avatar), :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
|
270
|
+
l.active = true
|
271
|
+
l.save!
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
249
275
|
|
250
276
|
puts 'Avatar population'
|
251
277
|
avatar_start = Time.now
|
252
278
|
SocialStream.subjects.each {|a| set_logos(Kernel.const_get(a.to_s.classify)) }
|
253
279
|
avatar_end = Time.now
|
254
280
|
puts ' -> ' + (avatar_end - avatar_start).round(4).to_s + 's'
|
255
|
-
|
256
281
|
end
|
257
282
|
end
|
258
283
|
end
|
data/social_stream-base.gemspec
CHANGED
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
|
|
58
58
|
# Autolink text blocks
|
59
59
|
s.add_runtime_dependency('rails_autolink', '~> 1.0.4')
|
60
60
|
# SocialCheesecake
|
61
|
-
s.add_runtime_dependency('social_cheesecake','~> 0.
|
61
|
+
s.add_runtime_dependency('social_cheesecake','~> 0.4.0')
|
62
62
|
# I18n-js
|
63
63
|
s.add_runtime_dependency('i18n-js','~>2.1.2')
|
64
64
|
|
@@ -25,6 +25,7 @@ describe PostsController do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it_should_behave_like "Allow Creating"
|
28
|
+
it_should_behave_like "Allow Reading"
|
28
29
|
it_should_behave_like "Allow Destroying"
|
29
30
|
|
30
31
|
it "should destroy with js" do
|
@@ -49,6 +50,7 @@ describe PostsController do
|
|
49
50
|
end
|
50
51
|
|
51
52
|
it_should_behave_like "Allow Creating"
|
53
|
+
it_should_behave_like "Allow Reading"
|
52
54
|
it_should_behave_like "Allow Destroying"
|
53
55
|
end
|
54
56
|
|
@@ -63,6 +65,7 @@ describe PostsController do
|
|
63
65
|
end
|
64
66
|
|
65
67
|
it_should_behave_like "Allow Creating"
|
68
|
+
it_should_behave_like "Allow Reading"
|
66
69
|
it_should_behave_like "Allow Destroying"
|
67
70
|
end
|
68
71
|
end
|
@@ -72,9 +75,13 @@ describe PostsController do
|
|
72
75
|
friend = Factory(:friend, :contact => Factory(:contact, :receiver => @user.actor)).sender
|
73
76
|
|
74
77
|
model_assigned_to @user.contact_to!(friend), friend.relation_custom('friend')
|
78
|
+
@current_model = Factory(:post, :author_id => @user.actor_id,
|
79
|
+
:owner_id => friend.id,
|
80
|
+
:user_author_id => @user.actor_id)
|
75
81
|
end
|
76
82
|
|
77
83
|
it_should_behave_like "Allow Creating"
|
84
|
+
it_should_behave_like "Allow Reading"
|
78
85
|
end
|
79
86
|
|
80
87
|
describe "post to acquaintance" do
|
@@ -87,6 +94,14 @@ describe PostsController do
|
|
87
94
|
it_should_behave_like "Deny Creating"
|
88
95
|
end
|
89
96
|
|
97
|
+
describe "post from other user" do
|
98
|
+
before do
|
99
|
+
@current_model = Factory(:post)
|
100
|
+
end
|
101
|
+
|
102
|
+
it_should_behave_like "Deny Reading"
|
103
|
+
end
|
104
|
+
|
90
105
|
describe "posts represented group" do
|
91
106
|
before do
|
92
107
|
@group = Factory(:member, :contact => Factory(:group_contact, :receiver => @user.actor)).sender_subject
|
@@ -105,6 +120,7 @@ describe PostsController do
|
|
105
120
|
end
|
106
121
|
|
107
122
|
it_should_behave_like "Allow Creating"
|
123
|
+
it_should_behave_like "Allow Reading"
|
108
124
|
it_should_behave_like "Allow Destroying"
|
109
125
|
end
|
110
126
|
|
@@ -125,6 +141,7 @@ describe PostsController do
|
|
125
141
|
end
|
126
142
|
|
127
143
|
it_should_behave_like "Allow Creating"
|
144
|
+
it_should_behave_like "Allow Reading"
|
128
145
|
it_should_behave_like "Allow Destroying"
|
129
146
|
end
|
130
147
|
|
@@ -140,6 +157,7 @@ describe PostsController do
|
|
140
157
|
end
|
141
158
|
|
142
159
|
it_should_behave_like "Allow Creating"
|
160
|
+
it_should_behave_like "Allow Reading"
|
143
161
|
it_should_behave_like "Allow Destroying"
|
144
162
|
end
|
145
163
|
|
@@ -155,11 +173,11 @@ describe PostsController do
|
|
155
173
|
end
|
156
174
|
|
157
175
|
it_should_behave_like "Allow Creating"
|
176
|
+
it_should_behave_like "Allow Reading"
|
158
177
|
it_should_behave_like "Allow Destroying"
|
159
178
|
end
|
160
179
|
end
|
161
180
|
end
|
162
|
-
|
163
181
|
end
|
164
182
|
|
165
183
|
context "creating post in group's wall" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-02-
|
13
|
+
date: 2012-02-28 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &86562090 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *86562090
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: ancestry
|
28
|
-
requirement: &
|
28
|
+
requirement: &86561710 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.2.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *86561710
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: foreigner
|
39
|
-
requirement: &
|
39
|
+
requirement: &86514950 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.1.1
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *86514950
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: devise
|
50
|
-
requirement: &
|
50
|
+
requirement: &86514700 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 1.5.3
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *86514700
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: inherited_resources
|
61
|
-
requirement: &
|
61
|
+
requirement: &86514440 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.3.0
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *86514440
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: stringex
|
72
|
-
requirement: &
|
72
|
+
requirement: &86514200 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 1.3.0
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *86514200
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: avatars_for_rails
|
83
|
-
requirement: &
|
83
|
+
requirement: &86513870 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 0.2.2
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *86513870
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: jquery-rails
|
94
|
-
requirement: &
|
94
|
+
requirement: &86513640 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 1.0.9
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *86513640
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: cancan
|
105
|
-
requirement: &
|
105
|
+
requirement: &86513400 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: 1.6.4
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *86513400
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: kaminari
|
116
|
-
requirement: &
|
116
|
+
requirement: &86513150 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 0.13.0
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *86513150
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: omniauth
|
127
|
-
requirement: &
|
127
|
+
requirement: &86512910 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: 1.0.2
|
133
133
|
type: :runtime
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *86512910
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: omniauth-facebook
|
138
|
-
requirement: &
|
138
|
+
requirement: &86512660 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ~>
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: 1.2.0
|
144
144
|
type: :runtime
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *86512660
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: omniauth-linkedin
|
149
|
-
requirement: &
|
149
|
+
requirement: &86512430 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ~>
|
@@ -154,10 +154,10 @@ dependencies:
|
|
154
154
|
version: 0.0.6
|
155
155
|
type: :runtime
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *86512430
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
159
|
name: mailboxer
|
160
|
-
requirement: &
|
160
|
+
requirement: &86512200 !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
163
163
|
- - ~>
|
@@ -165,10 +165,10 @@ dependencies:
|
|
165
165
|
version: 0.6.0
|
166
166
|
type: :runtime
|
167
167
|
prerelease: false
|
168
|
-
version_requirements: *
|
168
|
+
version_requirements: *86512200
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: acts-as-taggable-on
|
171
|
-
requirement: &
|
171
|
+
requirement: &86511970 !ruby/object:Gem::Requirement
|
172
172
|
none: false
|
173
173
|
requirements:
|
174
174
|
- - ~>
|
@@ -176,10 +176,10 @@ dependencies:
|
|
176
176
|
version: 2.2.2
|
177
177
|
type: :runtime
|
178
178
|
prerelease: false
|
179
|
-
version_requirements: *
|
179
|
+
version_requirements: *86511970
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
181
|
name: formtastic
|
182
|
-
requirement: &
|
182
|
+
requirement: &86511730 !ruby/object:Gem::Requirement
|
183
183
|
none: false
|
184
184
|
requirements:
|
185
185
|
- - ~>
|
@@ -187,10 +187,10 @@ dependencies:
|
|
187
187
|
version: 1.2.3
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
|
-
version_requirements: *
|
190
|
+
version_requirements: *86511730
|
191
191
|
- !ruby/object:Gem::Dependency
|
192
192
|
name: simple-navigation
|
193
|
-
requirement: &
|
193
|
+
requirement: &86511500 !ruby/object:Gem::Requirement
|
194
194
|
none: false
|
195
195
|
requirements:
|
196
196
|
- - ~>
|
@@ -198,10 +198,10 @@ dependencies:
|
|
198
198
|
version: 3.5.1
|
199
199
|
type: :runtime
|
200
200
|
prerelease: false
|
201
|
-
version_requirements: *
|
201
|
+
version_requirements: *86511500
|
202
202
|
- !ruby/object:Gem::Dependency
|
203
203
|
name: resque
|
204
|
-
requirement: &
|
204
|
+
requirement: &86511260 !ruby/object:Gem::Requirement
|
205
205
|
none: false
|
206
206
|
requirements:
|
207
207
|
- - ~>
|
@@ -209,10 +209,10 @@ dependencies:
|
|
209
209
|
version: 1.19.0
|
210
210
|
type: :runtime
|
211
211
|
prerelease: false
|
212
|
-
version_requirements: *
|
212
|
+
version_requirements: *86511260
|
213
213
|
- !ruby/object:Gem::Dependency
|
214
214
|
name: modernizr-rails
|
215
|
-
requirement: &
|
215
|
+
requirement: &86511010 !ruby/object:Gem::Requirement
|
216
216
|
none: false
|
217
217
|
requirements:
|
218
218
|
- - ~>
|
@@ -220,10 +220,10 @@ dependencies:
|
|
220
220
|
version: 2.0.6
|
221
221
|
type: :runtime
|
222
222
|
prerelease: false
|
223
|
-
version_requirements: *
|
223
|
+
version_requirements: *86511010
|
224
224
|
- !ruby/object:Gem::Dependency
|
225
225
|
name: thinking-sphinx
|
226
|
-
requirement: &
|
226
|
+
requirement: &86510720 !ruby/object:Gem::Requirement
|
227
227
|
none: false
|
228
228
|
requirements:
|
229
229
|
- - ~>
|
@@ -231,10 +231,10 @@ dependencies:
|
|
231
231
|
version: 2.0.8
|
232
232
|
type: :runtime
|
233
233
|
prerelease: false
|
234
|
-
version_requirements: *
|
234
|
+
version_requirements: *86510720
|
235
235
|
- !ruby/object:Gem::Dependency
|
236
236
|
name: sass-rails
|
237
|
-
requirement: &
|
237
|
+
requirement: &86510430 !ruby/object:Gem::Requirement
|
238
238
|
none: false
|
239
239
|
requirements:
|
240
240
|
- - ! '>='
|
@@ -242,10 +242,10 @@ dependencies:
|
|
242
242
|
version: 3.1.0
|
243
243
|
type: :runtime
|
244
244
|
prerelease: false
|
245
|
-
version_requirements: *
|
245
|
+
version_requirements: *86510430
|
246
246
|
- !ruby/object:Gem::Dependency
|
247
247
|
name: rails_autolink
|
248
|
-
requirement: &
|
248
|
+
requirement: &86510070 !ruby/object:Gem::Requirement
|
249
249
|
none: false
|
250
250
|
requirements:
|
251
251
|
- - ~>
|
@@ -253,21 +253,21 @@ dependencies:
|
|
253
253
|
version: 1.0.4
|
254
254
|
type: :runtime
|
255
255
|
prerelease: false
|
256
|
-
version_requirements: *
|
256
|
+
version_requirements: *86510070
|
257
257
|
- !ruby/object:Gem::Dependency
|
258
258
|
name: social_cheesecake
|
259
|
-
requirement: &
|
259
|
+
requirement: &86509750 !ruby/object:Gem::Requirement
|
260
260
|
none: false
|
261
261
|
requirements:
|
262
262
|
- - ~>
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: 0.
|
264
|
+
version: 0.4.0
|
265
265
|
type: :runtime
|
266
266
|
prerelease: false
|
267
|
-
version_requirements: *
|
267
|
+
version_requirements: *86509750
|
268
268
|
- !ruby/object:Gem::Dependency
|
269
269
|
name: i18n-js
|
270
|
-
requirement: &
|
270
|
+
requirement: &86509470 !ruby/object:Gem::Requirement
|
271
271
|
none: false
|
272
272
|
requirements:
|
273
273
|
- - ~>
|
@@ -275,10 +275,10 @@ dependencies:
|
|
275
275
|
version: 2.1.2
|
276
276
|
type: :runtime
|
277
277
|
prerelease: false
|
278
|
-
version_requirements: *
|
278
|
+
version_requirements: *86509470
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
280
|
name: capybara
|
281
|
-
requirement: &
|
281
|
+
requirement: &86509110 !ruby/object:Gem::Requirement
|
282
282
|
none: false
|
283
283
|
requirements:
|
284
284
|
- - ~>
|
@@ -286,10 +286,10 @@ dependencies:
|
|
286
286
|
version: 0.3.9
|
287
287
|
type: :development
|
288
288
|
prerelease: false
|
289
|
-
version_requirements: *
|
289
|
+
version_requirements: *86509110
|
290
290
|
- !ruby/object:Gem::Dependency
|
291
291
|
name: sqlite3-ruby
|
292
|
-
requirement: &
|
292
|
+
requirement: &86508580 !ruby/object:Gem::Requirement
|
293
293
|
none: false
|
294
294
|
requirements:
|
295
295
|
- - ! '>='
|
@@ -297,10 +297,10 @@ dependencies:
|
|
297
297
|
version: '0'
|
298
298
|
type: :development
|
299
299
|
prerelease: false
|
300
|
-
version_requirements: *
|
300
|
+
version_requirements: *86508580
|
301
301
|
- !ruby/object:Gem::Dependency
|
302
302
|
name: ruby-debug19
|
303
|
-
requirement: &
|
303
|
+
requirement: &86508210 !ruby/object:Gem::Requirement
|
304
304
|
none: false
|
305
305
|
requirements:
|
306
306
|
- - ! '>='
|
@@ -308,10 +308,10 @@ dependencies:
|
|
308
308
|
version: '0'
|
309
309
|
type: :development
|
310
310
|
prerelease: false
|
311
|
-
version_requirements: *
|
311
|
+
version_requirements: *86508210
|
312
312
|
- !ruby/object:Gem::Dependency
|
313
313
|
name: rspec-rails
|
314
|
-
requirement: &
|
314
|
+
requirement: &86507670 !ruby/object:Gem::Requirement
|
315
315
|
none: false
|
316
316
|
requirements:
|
317
317
|
- - ~>
|
@@ -319,10 +319,10 @@ dependencies:
|
|
319
319
|
version: 2.6.1
|
320
320
|
type: :development
|
321
321
|
prerelease: false
|
322
|
-
version_requirements: *
|
322
|
+
version_requirements: *86507670
|
323
323
|
- !ruby/object:Gem::Dependency
|
324
324
|
name: factory_girl
|
325
|
-
requirement: &
|
325
|
+
requirement: &86507130 !ruby/object:Gem::Requirement
|
326
326
|
none: false
|
327
327
|
requirements:
|
328
328
|
- - ~>
|
@@ -330,10 +330,10 @@ dependencies:
|
|
330
330
|
version: 1.3.2
|
331
331
|
type: :development
|
332
332
|
prerelease: false
|
333
|
-
version_requirements: *
|
333
|
+
version_requirements: *86507130
|
334
334
|
- !ruby/object:Gem::Dependency
|
335
335
|
name: forgery
|
336
|
-
requirement: &
|
336
|
+
requirement: &86314900 !ruby/object:Gem::Requirement
|
337
337
|
none: false
|
338
338
|
requirements:
|
339
339
|
- - ~>
|
@@ -341,10 +341,10 @@ dependencies:
|
|
341
341
|
version: 0.4.2
|
342
342
|
type: :development
|
343
343
|
prerelease: false
|
344
|
-
version_requirements: *
|
344
|
+
version_requirements: *86314900
|
345
345
|
- !ruby/object:Gem::Dependency
|
346
346
|
name: ci_reporter
|
347
|
-
requirement: &
|
347
|
+
requirement: &86314570 !ruby/object:Gem::Requirement
|
348
348
|
none: false
|
349
349
|
requirements:
|
350
350
|
- - ~>
|
@@ -352,10 +352,10 @@ dependencies:
|
|
352
352
|
version: 1.6.4
|
353
353
|
type: :development
|
354
354
|
prerelease: false
|
355
|
-
version_requirements: *
|
355
|
+
version_requirements: *86314570
|
356
356
|
- !ruby/object:Gem::Dependency
|
357
357
|
name: nifty-generators
|
358
|
-
requirement: &
|
358
|
+
requirement: &86314210 !ruby/object:Gem::Requirement
|
359
359
|
none: false
|
360
360
|
requirements:
|
361
361
|
- - ~>
|
@@ -363,7 +363,7 @@ dependencies:
|
|
363
363
|
version: 0.4.5
|
364
364
|
type: :development
|
365
365
|
prerelease: false
|
366
|
-
version_requirements: *
|
366
|
+
version_requirements: *86314210
|
367
367
|
description: ! 'Social Stream is a Ruby on Rails engine providing your application
|
368
368
|
with social networking features and activity streams.
|
369
369
|
|