我正在制作一个新的网络应用程序(Rails 6),我想将其与 websockets 一起使用。这是我第一次尝试将 ActionCable 与 Rails 一起使用。理想情况下,我会在 Heroku 上使用该应用程序,因为它通常是我开始应用程序项目的一种快速且方便的方式。
如果我的应用程序成功的话,如果它有 200 个并发用户,我不会感到惊讶。这对我来说似乎并不多。我假设他们中的许多人会打开其他选项卡,因此我估计 200 个用户将有大约 500 个 Websocket 连接。如果我的网站更成功,我可以看到 500 个活跃用户,即超过 1000 个 Websocket 连接。
经过初步研究,ActionCable推荐使用Heroku上的Redis。我很沮丧地发现,具有 500 个 Websocket 连接的 Redis 计划 (Redistogo) 的费用为 75 美元/月,1000 个连接的费用为 200 美元/月。真的,不仅仅是沮丧。震惊。我错过了什么吗?为什么这么贵?这些计划似乎还与大量存储空间相关,而(我的理解)ActionCable 甚至不需要这些空间。
我发现(理论上)也可以将 ActionCable 配置为使用 Postgresql 作为其适配器,尽管在网上查找时我没有看到任何人在 Heroku 上成功执行此操作的示例。所以我的问题是:
是否可以在 Heroku 上使用 ActionCable 而无需支付费用?我认为这意味着 Postgresql 适配器......
这样的设置可以处理多少个连接,有哪些限制、瓶颈等?
我无法找到有关 ActionCable 和 Postgresql 的太多信息,只是数量pools
必须匹配。我假设该pool
数字与 websocket 连接数不同?
感谢您提供任何信息...
如何在config/environments/production.rb中动态设置主机:
config.action_mailer.default_url_options = { :host => THE_HOST}
Run Code Online (Sandbox Code Playgroud)
这是应用程序在暂存和生产时正常工作.我们的登台服务器是stage.app.com,链接需要去那里.
我将如何在Arel中执行此操作(此AND此)或(此AND此)
上下文是rails 3.0.7
现在似乎每个人都在使用rspec,但默认情况下rails仍然与test :: unit捆绑在一起.
rspec相对于测试单元有什么主要优势吗?关于这个主题很难获得直接信息......
我在一个网站上引用了一个如下所示的javascript文件:
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('h=[\'.I-l\',\'#f-m\',\'.e-d-f\',\'.e-d-q\',\'.r-1-s\',c.t,c.k];5 g(0){8(0 6 w||0 6 v){y(b a z 0){b 9=0[a];$(9).7()}}8(0 6 E){$(0).7()}}$.G.7=5(){x j.H(\'F\',\'i\').2(\'3-1\',\'4\').2(\'-D-3-1\',\'4\').2(\'-C-3-1\',\'4\').2(\'-B-3-1\',\'4\').i(\'A\',u)};p(o).n(5($){g(h)});',45,45,'elements|select|css|user|none|function|instanceof|tknDisableSelection|if|current|key|var|tknSelectors|videos|recommended|next|tknSetUnselectable|tknUnselectable|on|this|vocabContent|listings|video|ready|document|jQuery|previous|expanded|wrapper|vocabTabList|false|Object|Array|return|for|in|selectstart|ms|moz|webkit|String|unselectable|fn|attr|dialogue'.split('|'),0,{}))
Run Code Online (Sandbox Code Playgroud)
这可能是一个可识别的混淆模式,但我不知道哪一个.
我怎样才能将其反转并将其转换为我能阅读的javascript?
当我部署到heroku时,Web请求是否被中断?如果某人正在上传一个文件,例如需要10秒左右的时间(我知道我应该使用延迟的工作),并且在此请求中间发生了部署,会发生什么?
我想做一个数据库查询来查找所有附加文件的记录。
class Departure
has_many_attached :pre_trip_documents
end
Run Code Online (Sandbox Code Playgroud)
然而这失败了:
Departure.joins(:pre_trip_documents).to_sql => #ActiveRecord::ConfigurationError (Can't join 'Departure' to association named 'pre_trip_documents'; perhaps you misspelled it?)
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Heroku 上添加一些服务,但失败了,因为我没有“既定的付款历史记录”。我们确实设置了信用卡,但显然这还不够?
据我所知,heroku 文档从未定义建立付款历史记录所需的内容。我昨天继续创建了一个付费测功机,看看是否可以做到这一点,但这仍然没有成功。
我需要等待一个月 Heroku 才会向我收取费用吗?
显然我不是唯一困惑的人:Heroku - 为什么我不能提供更高层的 ClearDB(验证问题?)?
所以他们拒绝我的钱是因为我以前没有付过钱吗?我不明白...
在我的模型中,我经常有很多关联.我还经常需要显示有多少(即assoc.count).这会强制执行另一个查询,如下所示:
ruby-1.8.7-p334 :020 > Instructor.first.instructors_lessons.count
Instructor Load (0.5ms) SELECT `users`.* FROM `users` INNER JOIN `instructor_profiles` ON `instructor_profiles`.`instructor_id` = `users`.`id` LIMIT 1
SQL (1.2ms) SELECT COUNT(*) FROM `instructors_lessons` WHERE (`instructors_lessons`.instructor_id = 2817)
Run Code Online (Sandbox Code Playgroud)
当有一个或两个时,这很好,但是当有100个以上时,这个过程明显变慢.请看这个极其缓慢的过程(http://pastebin.com/p4Sj7q7s).我一直在使用缓存来处理一个非常慢的页面.
我可以把它放在查询中这样:但这是乏味的,有点挫败ActiveRecord关联的目的我觉得:
select("instructors.*, count('instructors_lessons.instructor_id') as num_lessons").
Run Code Online (Sandbox Code Playgroud)
但后来我不能简单地说讲师.lessons.count ......
有没有办法使用连接()或包含(),以便不需要执行这个额外的COUNT()查询?
我正在使用 source /usr/local/opt/chruby/share/chruby/auto.sh 将 ruby 自动更改为 .ruby-version 中的版本,但不幸的是,这只适用于 cd。
当我在我的 mac 终端中打开一个新选项卡时,它会打开我在上一个选项卡中所在的同一目录,但自动更改不起作用。我对此的解决方案是返回cd ..
并cd
返回,这会触发更改。显然,这很烦人。
我尝试chruby_auto
在新选项卡中手动调用该函数,但这没有效果。
在这种情况下,有人可以提供如何更新我的 ruby 版本的解决方案吗?我更喜欢自动解决方案,但会满足于调用命令。
我有一些我非常喜欢的配色方案。我还发现它们之间的变化给我的工作增添了一些新鲜感。我手动更改已经有一段时间了,但很想自动化。
我想在我的代码中添加一行.vimrc
,从预定义的白名单中分配随机颜色方案。我用谷歌搜索了一下,没有找到明显的答案,甚至还有一些关于 vimscript 中是否有函数的争论random
。
我不太了解 vimscript,尽管这些年来我已经到处阅读了基础知识,但我对它缺乏实用知识,因为我很少使用它。所以我想我应该接触社区。经过一番研究后,我尝试自己执行此操作,但以下代码失败:
let my_colorschemes = ['torte', 'Dark2' , 'ubloh']
colorscheme my_colorschemes[rand() % (len(my_colorschemes) - 1 ) ]
Run Code Online (Sandbox Code Playgroud)
Cannot find color scheme 'my_colorschemes[rand() % (len(my_colorschemes)+ 1 ) ]'
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题吗?vimscript 中似乎缺少一些基本概念......
谢谢!
- - - - 更新 - - - - -
对于后代,在下面的正确答案之后,对我有用的代码是:
let my_colorschemes = ['torte', 'Dark2' , 'ubloh', 'znake']
execute 'colorscheme' my_colorschemes[rand() % (len(my_colorschemes) - 1 ) ]
Run Code Online (Sandbox Code Playgroud)
我想我已经很接近了,但我自己不可能找出问题所在。
我想在我的控制台中调用它(ap
是很棒的打印宝石):
ap Purchase.last(10)
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
irb(main):020:0> ap Purchase.last
#<Purchase:0x00007f86b792a320> {
:id => 28445,
:user_id => 10177,
:product_id => nil,
:product_type => nil,
:price => 9.0,
:gateway_code => nil,
:gateway_msg => nil,
:gateway_response => nil,
:created_at => Fri, 18 May 2018 22:20:10 UTC +00:00,
:updated_at => Fri, 18 May 2018 22:20:10 UTC +00:00,
:checkout_total => 9.0,
:successful => true,
:cart_id => 17242,
:report_errors => nil,
:transacted_value_of_products => 9.0,
:comp_credits_applied => 0.0 …
Run Code Online (Sandbox Code Playgroud) ruby-on-rails strong-parameters awesomeprint rails-activerecord
heroku ×3
ruby ×2
actioncable ×1
activerecord ×1
arel ×1
awesomeprint ×1
billing ×1
chruby ×1
color-scheme ×1
host ×1
javascript ×1
postgresql ×1
redis ×1
rspec ×1
testunit ×1
vim ×1