我最终结合自己的项目情况,决定用V2重写开源项目,而不是用V1升级到V2,因为我的工程设计思想和V2建议的工程结构差别很大。经过仔细考量后,我认为V2的工程架构更好,虽然门槛稍高一点,但是在项目后期更易于维护。

我尝试根据提示执行 go get 相关依赖,但是并没有生效。wget -O gf https://github.com/gogf/gf/releases/latest/download/gf_$(go env GOOS)_$(go env GOARCH) && chmod +x gf && ./gf install -y && rm ./gf
查看gf cli版本 已经更新到了v2.2.0 最新版:
在解决了CLI升级问题之后,我真的长舒了一口气。准备迎接新的挑战吧:
安装升级gtoken的教程如下:
我是使用gopath模式安装的,很顺利;我们再继续解决新的报错:
通过查阅文档得知,gmvc已经废除,以后也不再支持了:
并没有迎接到暴风雨, 而是卡住了。原因是这样的,正如我开篇说的:V2版本的工程目录做了调整,官方说:如果你的V1项目使用的是GoFrame官方推荐的工程目录结构,可以参考最新的工程目录结构手动调整即可:工程目录设计[2]。需要注意的是,最新的cli工具不再支持旧版工程目录的项目创建。



官方建议的工程目录| 目录/文件名称 | 说明 | 描述 |
| api | 对外接口 | 对外提供服务的输入/输出数据结构定义。考虑到版本管理需要,往往以api/v1...存在。 |
| hack | 工具脚本 | 存放项目开发工具、脚本等内容。例如,CLI工具的配置,各种shell/bat脚本等文件。 |
| internal | 内部逻辑 | 业务逻辑存放目录。通过Golang internal特性对外部隐藏可见性。 |
| - cmd | 入口指令 | 命令行管理目录。可以管理维护多个命令行。 |
| - consts | 常量定义 | 项目所有常量定义。 |
| - controller | 接口处理 | 接收/解析用户输入参数的入口/接口层。 |
| - dao | 数据访问 | 数据访问对象,这是一层抽象对象,用于和底层数据库交互,仅包含最基础的 CURD 方法 |
| - logic | 业务封装 | 业务逻辑封装管理,特定的业务逻辑实现和封装。往往是项目中最复杂的部分。 |
| - model | 结构模型 | 数据结构管理模块,管理数据实体对象,以及输入与输出数据结构定义。 |
| - do | 领域对象 | 用于dao数据操作中业务模型与实例模型转换,由工具维护,用户不能修改。 |
| - entity | 数据模型 | 数据模型是模型与数据集合的一对一关系,由工具维护,用户不能修改。 |
| - service | 业务接口 | 用于业务模块解耦的接口定义层。具体的接口实现在logic中进行注入。 |
| manifest | 交付清单 | 包含程序编译、部署、运行、配置的文件。常见内容如下: |
| - config | 配置管理 | 配置文件存放目录。 |
| - docker | 镜像文件 | Docker镜像相关依赖文件,脚本文件等等。 |
| - deploy | 部署文件 | 部署相关的文件。默认提供了Kubernetes集群化部署的Yaml模板,通过kustomize管理。 |
| resource | 静态资源 | 静态资源文件。这些文件往往可以通过 资源打包/镜像编译 的形式注入到发布文件中。 |
| go.mod | 依赖管理 | 使用Go Module包管理的依赖描述文件。 |
| main.go | 入口文件 | 程序入口文件。 |

咱们来分析一下,目前做的操作只是:
我尝试通过用goland打开我的go/src目录,而不是直接打开shop工程目录,来解决问题:这招比较好用,项目的依赖不再全部飘红,并且goland也给出了提示:

好吧,啥也别说了,继续修改:我将之前处理业务逻辑的app目录中的文件迁移到internal目录中。温馨提示:你的项目是哪个目录不重要,总之,按照GoFrame V2的原则,只有api目录用于暴露给外部,不需要暴露给外部的逻辑全部放在internal目录中:
经过目录调整,修改后的目录结构和官方建议的目录结构基本一致了:
然后继续各种运行,报错,解决错误,整体上都比较好解决,就不做记录了。值得分享的经验就是:不要怕报错多,整体看一遍,找找共同特点。绝大多数都是可以根据提示顺利解决的问题。
答案是:在logic层编写代码,通过工具生成对应的service文件;在logic层的init()方法中调用service层的RegisterXXX()方法进行服务注册,由此可见复杂的逻辑都是在logic层处理的。
显然,我的架构设计和GoFrame V2的工程设计思路差别是很大的,经过慎重思考,我决定基于V2最新版本重写开源项目,也欢迎小伙们加入我们。
转载本文请联系「 程序员升级打怪之旅」公众号。 尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt