用户可以从其他网站导入他的数据.他需要做的只是在国外网站上输入他的用户名,我们将获取所有图片并将其保存到自己的图库中.一些图片需要使用rMagick(旋转,水印)进行转换,这取决于导入器(取决于用户选择从哪个网站导入数据)
我们正在讨论最性感和最灵活的方式.我们正在使用carrierwave,但是如果它更适合我们,我们将改为回形针.
当前结构看起来像(它的大致伪代码)
module Importer
class Website1
def grab_pictures
end
end
class Website2
def grab_pictures
end
end
end
class ImporterJob
def perform(user, type, foreign_username)
pictures = Importer::type.grab_pictures(foreign_username)
pictures.each do |picture|
user.pictures.create picture
end
end
end
Run Code Online (Sandbox Code Playgroud)
我们为这个决定而斗争,这是进口商的最佳回报.
导入器返回一个包含URL ["http:// ...","http:// ...","http:// ..."] 的字符串数组.我们可以轻松地循环并告诉carrierwave/paperclip remote_download图像.之后,如果需要,我们将运行处理器来转换图片.
def get_picture_urls username
pictures = []
page = get_html(username)
page.scan(/\/p\/\d{4}-\d{2}\/#{username}\/[\w\d]{32}-thumb.jpg/).each do |path|
pictures << path
end
pictures.uniq.collect{|x| "http://www.somewebsite.com/#{x.gsub(/medium|thumb/, "big")}"}
end
Run Code Online (Sandbox Code Playgroud)
这实际上返回一个数组["url_to_image","url_to_image","url_to_image"]
然后在Picture.after_create中,我们调用一些东西来删除该Image上的Watermark.
grab_pictures正在将每张图片下载到tempfile并对其进行转换.它将返回一个tempfiles数组 [tempfile,tempfile,tempfile]
代码是:
def read_pictures username
pictures = [] …Run Code Online (Sandbox Code Playgroud) 我有3个Web服务器.DB,Web和Worker.工人整天都在处理sidekiq流程.
一旦队列超过100,000个工作岗位,我想拥有第二个工人实例,并且我正在努力思考如何做到这一点.(如果队列超过300.000,我需要3名工人,一次又一次).
Worker拍了拍快照.我需要告诉数据库服务器允许它从这个实例IP接收连接
一旦队列低于20.000,我就可以杀死我的实例.
这是正确的做法还是有更好的方法?我错过了什么吗?
附加问题:
在DB我只有MySQL和Redis的.没有红宝石或其他任何东西.所以也没有铁轨运行.如果我worker决定创建另一个worker,那么新的worker需要访问mysql.似乎无法从远程计算机创建一些访问权限,它看起来我需要从数据库服务器创建访问权限.
mysql> show grants;
+-----------------------------------------------------------------------------------------+
| Grants for rails@162.243.10.147 |
+-----------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'rails'@'162.243.10.147' IDENTIFIED BY PASSWORD <secret> |
| GRANT ALL PRIVILEGES ON `followrado`.* TO 'rails'@'162.243.10.147' |
+-----------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> CREATE USER 'rails'@'162.243.243.127' IDENTIFIED BY 'swag';
ERROR 1227 (42000): Access denied; you need (at least one …Run Code Online (Sandbox Code Playgroud) 不,这不是重复的.对于各种事件,这是有效的 - 滚动除外!
我们正在弹出聊天窗口,我们需要观察那些滚动事件.
这很有效
$(".chat-window").scroll(function() {
var scroll = $(this).scrollTop();
console.log(scroll);
})
Run Code Online (Sandbox Code Playgroud)
OBV.在聊天窗口已经弹出后,如果我将它扔进我的控制台,它就可以工作了.
但我们需要它用于未来的元素.这个解决方案不起作用
这项工作非常重要
$(document).on("scroll", ".chat-window", function(event) {
var scroll = $(this).scrollTop();
console.log(scroll);
});
Run Code Online (Sandbox Code Playgroud)
"不起作用"我的意思是该功能未被触发.
是我还是jquery中的常见错误?我无法看到狡猾的陈词滥调.
我想将资源的路径从"/ partner_programms"更改为"/ programmangebot".
有没有办法用active_admin做到这一点,而没有放入我自己的routes.rb路由?
ActiveAdmin做:
admin_categories GET /admin/categories(.:format) {:action=>"index", :controller=>"admin/categories"}
POST /admin/categories(.:format) {:action=>"create", :controller=>"admin/categories"}
new_admin_category GET /admin/categories/new(.:format) {:action=>"new", :controller=>"admin/categories"}
edit_admin_category GET /admin/categories/:id/edit(.:format) {:action=>"edit", :controller=>"admin/categories"}
admin_category GET /admin/categories/:id(.:format) {:action=>"show", :controller=>"admin/categories"}
PUT /admin/categories/:id(.:format) {:action=>"update", :controller=>"admin/categories"}
DELETE /admin/categories/:id(.:format) {:action=>"destroy", :controller=>"admin/categories"}
Run Code Online (Sandbox Code Playgroud)
当我做
#routes.rb
namespace :admin do
resources :categories, :path=>"Kategorien"
end
Run Code Online (Sandbox Code Playgroud)
我得到了未命名的路线
admin_categories GET /admin/categories(.:format) {:action=>"index", :controller=>"admin/categories"}
POST /admin/categories(.:format) {:action=>"create", :controller=>"admin/categories"}
new_admin_category GET /admin/categories/new(.:format) {:action=>"new", :controller=>"admin/categories"}
edit_admin_category GET /admin/categories/:id/edit(.:format) {:action=>"edit", :controller=>"admin/categories"}
admin_category GET /admin/categories/:id(.:format) {:action=>"show", :controller=>"admin/categories"}
PUT /admin/categories/:id(.:format) {:action=>"update", :controller=>"admin/categories"}
DELETE /admin/categories/:id(.:format) {:action=>"destroy", :controller=>"admin/categories"}
GET …Run Code Online (Sandbox Code Playgroud) 我尝试修改我的CheckoutSteps.我们的客户无法选择送货或付款,因为所有订单都是相同的.(运费为5欧元,订单超过100欧元,然后免费).付款总是Eruopean BankTransfer(我们注意到订单中的客户 - 电子邮件).
所以我从我的订单中删除了州":delivery".跳过该步骤但没有对运输的分配.
我很难在Controller中自动分配它.
我看到正常的assigment是nested_attribute但我很难自己做这些关联.我试图调试控制器和模型,但我找不到正确的关联,并找到一种手动设置它们的方法.参数是
"order"=>{"shipments_attributes"=>{"0"=>{"selected_shipping_rate_id"=>"16", "id"=>"20"}}},
Run Code Online (Sandbox Code Playgroud)
但我找不到任何我可以自己进行调整的代码.如果我们进入结账流程,
Spree::Order.last.shipments
=> []
Run Code Online (Sandbox Code Playgroud)
但是一旦我们进入"交付"页面
Spree::Order.last.shipments
=> #<ActiveRecord::Associations::CollectionProxy [#<Spree::Shipment id: 28, tracking: nil, number: "H43150550345", cost: #<BigDecimal:ff44afc,'0.0',9(18)>, .............
Run Code Online (Sandbox Code Playgroud)
因此运费为0.0
Spree::Order.last.shipments.first.cost.to_f => 0
Run Code Online (Sandbox Code Playgroud)
但是当我们在网页上选择运送方式时,我的运费正确计算.
Spree::Order.last.shipments.first.cost.to_f => 5.0
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何在没有user_interaction的情况下以编程方式进行此行为?
我不知道什么事情发生,文档没有帮助.谁能帮我吗?
//编辑
使用了一些模型函数,找到了create_proposed_shipments和shipment.update_amounts.那是"正确的方式"吗?不能让它工作
checkout_flow do
go_to_state :address
#go_to_state :delivery #kicked out
go_to_state :payment, if: ->(order) {
order.create_proposed_shipments #create the shipping
order.shipments.first.update_amounts #"accept" the shipping
order.payment_required?
}
Run Code Online (Sandbox Code Playgroud) 我有 3 个队列正在运行
User
Follower
Default
Run Code Online (Sandbox Code Playgroud)
用户可以导入他的数据,然后由User队列完成。这实际上创建了大量的关注者(多达数百万),并且每个人都有一个 after_create 来在队列中更新自己Follower。
这里的问题是,50 个用户现在可以创建他们的导入,但我只想同时完成 1 个导入。先进先出 - 而Follower-Queue应该仍然与 100 名工人同时工作。示例:1 个用户导入 500.000 个关注者。那么下一个用户导入500万。接下来导入 400。同时加载用户 1 的关注者。
有可能吗?
我的 YAML 看起来像这样
:queues:
- user
- follower
- default
Run Code Online (Sandbox Code Playgroud)
文档现在告诉我,用户队列的优先级很高。但如何判断该队列中只有 1 个作业同时完成?
这是预选我的.item.active.selected但不幸的是它也会激发了onChange.还有另外一种方法吗?
$(function() {
$.each($(".ui.dropdown"), function(i, dropdown) {
selected_value = $(dropdown).find(".item.selected").data("value");
$(dropdown).dropdown("set selected", selected_value);
});
});
Run Code Online (Sandbox Code Playgroud) 我是红宝石的初学者,但我无法摆脱这个问题,当我运行代码时,我得到这些,这一切都运行良好,直到结束:
输入文本:一切顺利,直到
INPUT SUBTEXT:ll
TEXT:这一切都运行良好,直到SUBTEXT:ll
输出:4 15
undefined方法+' for nil:NilClass
(repl):18:in初始化'
puts "\nINPUT TEXT:"
@text = gets.chomp
puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp
puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)
puts "OUTPUT:"
while i != -1
puts i.to_s + ' '
i = @text.index @subtext, i+1
end
Run Code Online (Sandbox Code Playgroud)