使用Rails + PostgreSQL进行应用开发
新闻摘要
这是我对我开发的应用程序的解释。
我总结了背景,功能,困难,改进之处以及未来的挑战。
您可以从以下链接查看实际创建的网站和源代码。
GitHub 链接:https://github.com/rotosiri-zu/pcparts
目前我们已停止运营AWS和Heroku。
创建的背景
我是通过我的兴趣自己组装电脑的,对其他用户使用了什么部件很感兴趣。因此,我创建了一个供自己组装电脑的用户之间交流部件信息的社交网络,以加深对部件选择的关注,并可作为购买参考。
另外,我打算辞职,并成为一家Web开发公司的Web工程师,所以我决定将这个应用作为我的求职作品集。
我们在功能说明标题旁边列出了使用的宝石(gem)。
フロントエンド
jQuery 4.4.0
Vue.js 2.6.12
HTML/SCSS/bootstrap4
バックエンド
Ruby 2.6.6
Ruby on Rails 5.2.4.3
インフラ
CircleCI
Docker 3.3.3/docker-compose 1.29.1
PostgreSQL 13.2/pgadmin4
Amazon Web Services(EC2, S3, VPC, Route 53, ACM, ALB, IAM, RDS)
バージョン管理
github
服务器端的逻辑使用Ruby/Rails进行编程,
前端的细节设计通过Scss进行整理,需要添加动态效果时使用Vue.js或jQuery进行实现。
开发环境使用Docker/docker-compose,
关于CI/CD流水线,使用CircleCI进行自动测试和构建,
通过Capistrano实现自动部署。
关于开发环境
我们使用Docker / docker-compose作为开发环境,并使用以下四个容器进行以下用途。
1. 网络服务器的容器:Nginx
2. 应用程序的容器:Ruby/Rails/Vue.js
3. 数据库的容器:PostgreSQL
4. 用于数据库管理的容器:pgadmin4
数据库设计

对于每个桌子
亚马逊云服务架构图

主要功能
登录和登出功能(Devise)。
您可以通过注册用户或者访客登录进行登录。您也可以通过主页屏幕进行访客登录。

投稿功能
只要注册会员,您就可以自由地发帖。
如果输入有误,将无法发帖并显示错误消息。

详细画面
这是已投稿商品的详细页面。

我的页面功能
您可以查看用户发布的项目列表。

商品名称搜索功能(Ransack)
您可以使用您在投稿时输入的标题名称进行搜索。

类别搜索功能 (祖先)
在投稿时,您可以通过选择的类别进行搜索。

口口相传的发布功能
您可以发布对PC配件的评价。
如果输入有误,则无法发布评论,并显示错误消息。
使用jQuery实现了根据星级进行评价的功能。

物品更新和删除功能
您可以更新或删除已投稿的项目。

客户评论更新和删除功能
您可以更新或删除提交的评论。

单体测试和集成测试(RSpec,Capybara,factory_bot_rails)
模态窗口(Vue.js)
星级评价功能(jQuery Raty)
分页功能(kaminari)
将图片上传至亚马逊网络服务S3桶(使用carrierwave)。
N+1(黄金勺子)
种子数据 (seed_fu)的初始数据
面包屑导航(格蕾特尔)
使用 CircleCI 和 Capistrano 实现的 CI/CD 功能
艰辛之处
從開發到部署的每個工程都遭遇了各種錯誤,我們將這些困難點整理如下。
在前端工作中遇到的困难。
-
- Railsに組み込んだvue.jsがページ遷移をすると読み込まれなくなる現象に遭遇しました。
- Railsにvue.jsを組み込みモーダルウィンドウの機能作成後、ページ遷移をするとモーダルウィンドウの機能欄が消えてしまう。ページ更新をすると機能欄が表示される。そのような不具合に見舞われ、いったいなにが原因分からなかったので素直にメンターに質問し回答を頂いたところ原因はturbolinkの問題でした。その際qiitaの記事を教えていだ抱いたので共有いたします。
-
- [Railsに組み込んだvuetifyがページ遷移をすると読み込まれなくなる現象を解消した]
- (https://qiita.com/kyokucho1989/items/386e56b8a454288e8116)
只需要一种选择:在后端的辛苦努力
- 新規投稿でCategoryのセレクトボックス追加機能実装時”NoMethodError”の”undefined methodmap’ for nil:NilClass`”のエラーに遭遇しました。

原因
因为在视图的选择框中漏掉了提取Category_id信息的描述,所以我补充了该描述并进行了信息提取,这样错误消失了。
在AWS上的困难
Capistranoを用いて自動デプロイしたときにERROR linked file /var/www/アプリ名/shared/config/master.key does not exist on ElasticIP」のエラーがでました。
原因はmaster.keyがないためデプロイに失敗しました。
googleで検索し1次ソース記事を参考にmaster.keyをサーバー側に追加し,再度実行したところデプロイに成功しました。
努力点
・我在RSpec中执行了单元测试和表格验证测试。
・我在RSpec中执行了综合测试的CRUD操作测试。
・我使用vue.js创建了模态窗口,并添加了功能说明项目。
为什么选择了Ruby on Rails这种编程语言?
我选择Ruby on Rails的原因是因为它对初学者来说更容易入门,并且有许多供参考的文章和社区资源。
未来的挑战
文献引用
- 現場で使える Ruby on Rails 5速習実践ガイド