Discourse 是一个商业公司,他通过开源方式开发并提供 SaaS 服务。
这个项目的国内爱好者搭的论坛凉了跟开源社区凉不凉有什么关系?
写测试是为了开发人员自己,如果有足够信心下次改需求的时候不会把原有功能改坏,就可以少写。
贴一下 Gemfile,看看有没有 mail_form,另外执行命令的路径有没有弄错。
bundle install
看看输出。
这教程作为入门很不友好,一次过参杂了太多第三方 Gem,guard
、livereload
,mail_form
,haml
这几个 gem 都是很小众的,出问题都不知道是哪一个。
把 bundle show
的结果贴上来,确认 mail_form 安装了没。
如果已经安装,启动 server 缺提示找不到,有可能是 guard 或者 livereload 导致重启不完整,命令行 ps
一下看看有没有 ruby 进程没退出,啊是 Windows,不懂 Windows 对应的命令是啥。
mercenary 跟 OptionParser 语法近似,多了子命令的语法,不需要子命令的话确实 OptionParser 够用了。
跟一些命令行库的 README,一般就足够使用,我偏好这个库 https://github.com/jekyll/mercenary
要系统的了解命令行程序的惯例的话,有本书叫《Build Awesome Command-Line Applications in Ruby 2》
动态语言肯定比静态语言慢了,Ruby 的比较对象应该是 Python、PHP、JavaScript。
性能也不是技术选型的唯一标准,要不然都用 C 好了,Java 就没必要诞生。
看了下文档感觉有些辣眼睛,非但不写如何与主流 bundle 工具集成反而写自己如何特立独行……
要不换个主流一点的 ui 库?
rails new --skip-sprockets
创建一个新项目看看有什么差别。
在 action 里面 render turbo_stream 是普通的 http 响应,不会受 websocket 稳定性影响;在 model 里面用 broadcasts 才走 websocket(actioncable)。
X-Y 问题,你想要做什么?
编辑帖子并用 markdown 格式排版。
测试请求语句加上参数 xhr: true
🎉🎉🎉
感谢队长的贡献 🎉
我一直对 Ruby 的前景充满信心,经历了 node.js,Go,Elixir 的热潮我依然不离不弃,因为我觉得性能问题是可以通过社区努力提升,而语言设计是否优雅是决定性无法改变的。虽然离实际项目获得提升还有一段距离,但是确实看到希望了!
其实就两个问题:
楼上#5 对的,我记错了。
(4-(element.length)).times {element = "0" + element}
最后返回的值是 .times 方法的值。暂时没遇到问题,主要都忘了 webpack 怎么设置了,如果要改配置就很费时间 😅
其它好说看到 webpacker 心里一惊赶紧去找升级文档。
去掉 =
,不用 setter 方法
def safe_attributes(attrs, user=User.current, type='father')
logger.info("attrs.class.name => #{attrs.class.name}") #log日志中:attrs.class.name => Array
...
do something
...
end
另外注意 user=User.current
有隐患,默认值不用简单类型而是线程变量可能会有 bug,曾经默认值的计算时机变动过一次。
方法后面加 =
是 setter method,解析器会特殊处理,setter 方法只会接受一个参数,并且方法的返回值也是这个参数。如果参数有多个,他们会当作一个数组。
例子:
def test=(a, b = 'b', c = 'c')
puts a.inspect
puts b.inspect
puts c.inspect
end
self.test = 1, 2, 3
结果:
[1, 2, 3]
"b"
"c"
我没搜到官方文档,有知道的可以补充一下。
setter 方法以前坛里有一些讨论 https://ruby-china.org/topics/24631
没看到问题。
db 启动状态是正常的。
在 web 容器里用 psql 连不到数据库是正常的,要加上数据库的 host,username, password。
psql -h db -U postgres -d DBName
# 密码 password
# DBName 按环境不同
如果 config/database.yml
设置正确,则可以
bin/rails db
楼主要了解到 web 和 db 是两部主机,之间是通过网络通信。
DirectUpload 是上传到储存后端,根据配置可以是本地文件储存或者 S3 一类的云储存,本地文件储存是由 Rails 提供了一个 API。
印象中 DirectUpload 是这样一个流程:
ActiveStorage 有个 DirectUpload 的类,通过手动 create 可以控制它上传的时间,但是要看看源码才理解它怎么用,文档不够详细。