各种尝试后,都没有找到 session 不能写入的原因。最后用了一个最笨的办法,用rails new
新建一个干净的 rails 6 项目,然后将旧项目代码逐步复制到新项目里,结果能够正常运行了。
老项目从 rails 5 升级到 6,与其靠各种 update 命令行进行升级,可能还真不如新建一个项目,然后手工一步一步的进行排查和迁移。
使用方法变化挺大的。
不在需要 YAML 的默认配置文件,所有都在 Setting model 指定
,是指不支持 config/app.yml 文件了吗?
在 Setting 类里面直接写默认键值,感觉不太习惯。
这是一个单点登录 (SSO) 的需求吧?
我是根据下面的文章和代码改写了一个 SSO 网站,其它的小项目网站都使用统一认证,太好用了。
这篇文章可以帮助快速理解高大上的 SSO 原理。
ruby2.6 + rails 5.2.2,用于生产环境没问题吧?
我的发言部分可以分享 你介绍的网站不错
感谢分享!如果只用微信收款的话,看起来值得研究一下。
你推荐的这个网站页面上没有一个能点击的链接,我还以为我浏览器出了问题呢。难道这是一个众筹项目?
仅从文案上看,这个项目只支持微信接口。另外,上面宣称使用了微信官方正式的接口。这个确实比较神奇,我想象不出来是怎么实现的。
我知道的市面上类似的实现方式就是某公司以法人名义获取微信官方正式支付接口,然后自己做个支付平台,以二级账单的方式分享给个人支付接口用户。这个方式最大的问题就是所有资金都是走了这家公司,所以资金是否有风险完全取决于这家公司的人品。另外,这种方式违反微信的条款。
目前的政策环境下,所有面向个人支付的接口平台都处于灰色地带,没法做大。做大了就会面临支付网站的封堵,以及各种牌照的要求和处罚。
再扯远一点说,如果严格按照现行规定,任何经营行为的网站必须办理 ICP 证 (注意不是 ICP 备案),而办理这个 ICP 证的资质是注册资金 100 万以上的法人。所以理论上目前任何个人开通一个能收钱的网站都是不合法的(页面上放置有收入的广告也算)。
确实跟自己经验不足有关。这种问题最坑人的是程序不会报错,只能在通过测试甚至上线后才能发现失误。
这个需求绝对是有的,特别是针对一些旧系统做追加开发,但是楼主的需求好像用不着故意弄复杂。
技术上来说处理多个数据库是可能的,网上有很多这种文章: https://www.thegreatcodeadventure.com/managing-multiple-databases-in-a-single-rails-application/
还有人干脆就写了 gem:https://github.com/ankane/multiverse
这个时序图更像是支付宝官方的接入方式。
③和④之间少了那个 Android 上的消息监听 + 触发付动作。我不晓得别人,反正当时我花了点时间才想明白那个 App 才是关键的动作触发器。
挺佩服最早想出这个主意的人。国外的 PayPal 和 Stripe 都允许个人申请支付接口,国内只能用出奇制胜的偏方,不知道支付宝们是怎么想的。
我是用RestClient
这个 gem 访问 paysapi 的,参考 php 版本的样例代码,实现起来不算太难。
开发前期最重要的是理解支付动作的时序图。这种野路子的支付方式至少包括的角色有:最终用户、业务销售网站、xx 个人支付接口网站、安卓手机上 (用旧手机长期开机) 的消息监控程序。
谁知道以前在这个平台上经常做推广的云 x 在线 V 服务后来怎么样了?我还挺喜欢他们的服务。名称大家就不用说了。
用过paysapi对接自己的 rails 网站,效果很不错。这种方案挺适合个人开发者做点在线小生意的。
看起来你的月服务费要更便宜一些,不知道稳定性怎么样。
如果只是对单个数字属性进行修改,确实可以使用increment
或increment !
方法。但是如果里面有更复杂的逻辑处理,就没办法使用increment
方法了。
我想知道,有没有一个内置的办法,对已有的方法,例如mymethod
,直接就可以附上感叹号去调用mymethod !
,而不用在类里面对感叹号方法进行定义。
这个跟墙没关系。在同一网络下,身份证认证的支付宝就完全没问题,护照认证的支付宝就不能支付给境外商家。
我推测这个可能是国内严格的外汇政策有关。
缘分啊,我也用了net-ping这个 gem。从 Gemfile 去掉以后,果然就不报bin/rails: No such file or directory - busybox
这个错误了。
我也是用的这种办法,先用rails new temp_prj
命令创建一个干净的 5.2 版本的项目,然后逐一对比 Gemfile 及其它 Config 文件,将新版本的设置复制到现有项目中。
我感觉这种升级的办法不正规,应该有什么命令可以让老项目的 rails 版本直接升级到最新版吧。
原因是我的网站访问量极小,以前总是感觉不值得再启动一个 redis 服务。看来这次只能改用sidekiq
了。
升级到了 ruby2.5.1 + rails 5.2.0 时,碰到各种小问题,其中一个是启动 rails 时,出现一个报错信息bin/rails: No such file or directory - busybox
。不知道这个错误是什么原因,但是它不影响 puma 正常启动。
...
/Users/my/my_prj/bin/rails: No such file or directory - busybox
=> Booting Puma
=> Rails 5.2.0 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 5, max threads: 5
...
另外碰到的一个坑就是如果用 mysql 数据库的话,mysql2 必须升级到最新版,不然 rails 启动不起来。
# Use mysql as the database for Active Record
gem 'mysql2', "0.5.1"
还有一个 gem: delayed_job_active_record
没法用了。
我查了一下,AdminLTE 还是基于 Bootstrap 3 的,据说很快也会推出基于版本 4 的。另一个管理界面的模板 SB Admin 2,已经是基于 Bootstrap4 的了。常用的还是 SB Admin 2,决定选择 bootstrap 4 了。
对于不懂前端的人来说,bootstrap 就是大神。
谢谢各位热心的建议!
现在又没有了。就是没有登录的状态下,直接点击首页上 XX 元订阅,一直出现 rails 的默认错误页面。
做的挺好的。不过点击订阅后,全是 rails 默认的错误,不知道是不是测试版的缘故,如果是生产环境,最好还是找个好看的错误页面吧。
我有过独立开发者的经验。工作与生活的界限分不清,作息时间混乱,还有可怕的孤独感,真的不是一个好的选择,喜欢折腾的话,还是找个创业团队吧,不然还是上班最爽。
在树莓派上编译 ruby 确实比较慢,我在网上找了一些别人的经验,耗时也差不多。也许是 ruby 在 ARM 机器上编译确实效率差。
不过编译安装完以后,rails 用起来并没有特别慢的感觉。用树莓派做长期开机的家用小服务器,跑个自己用的小服务,效果极好。
谢谢关于升级的建议!我的需求是用户在界面上能看到提示升级的链接,点击后就可以自动升级网站代码,接着自动重启 rails 服务。我好像没见过 rails 网站里有类似的实现例子。
确实 go 语言也许是个更好的选择,可以编译成一个独立程序,管理起来也方便。问题是我目前不会 go,需要增加学习的时间。
我以前在 centos 上开发过一个类似的网站,所以我想先用现成的 rails 代码快速完成一个可用的原型,然后再考虑用别的语言实现。到时候即使我不会 go,也可以很容易找到人改写成 go 语言。
个人觉得:
培训与被培训这件事本身是件美好的事情。
培训班的讲师对于很多老程序猿来说是个不错的职业选择。不再有那么多加班,还可以锻炼自己的表达能力,多跟人打交道,非常健康的职业。
高手与低手也是相对的吧。拿顶级的技术大牛去 PK 新手培训班的讲师的编程水平,其实没啥意义吧。况且一般人很少有机会去接触那些大牛。
三人行必有我师。例如我是一个靠 google 和 stackoverflow 编程的入门级 ruby 技术新手,但是在某些场景下,我依然可以作为一些人的讲师。打个比方,假如我办一个收费 5 元钱的培训班,一对一的去教如何在半小时内学会 Linux 上安装 ruby on rails 环境,相信很多没有 linux 经验的人会把我当成“高手”吧。当然如果我找名人给我做宣传,另外把培训费改成 5 千块,那就成了商业高手,另当别论了。
树莓派上也支持 docker,可惜我完全不懂 docker。等代码开发完了我也学习一下 docker 方式的发布。
这种培训项目不能一棍子全打死吧。有些还是很有用的,至少能亲眼见识高手是怎么编程的。自己看书的话达不到这个效果。那个 Ruby 培训班如果价钱没那么贵的话,我肯定是想去的。
当然效果取决于学习者本人。有人是公司出钱派去纯粹是糊弄时间的,也有人根本没有基础,以为花钱就能学会的,结果是听天书的。
【如何夸奖程序员?】
生日快乐,感谢大拿们!
问题解决了,原来是我自己定义了一个Settings
,造成名称冲突了。再次感谢 rails-settings-cached 的作者。
Config.setup do |config|
config.const_name = 'Settings'
``