【Ruby on Rails问题】publish_name.rb文件中定义的变量显示没有定义NameError: uninitialized constant DB_CLASS

在rails项目中,config/initializers/publish_name.rb文件常用来定义的全局变量、全局常量。但是我们虽然在publish_name.rb文件中定义了常量,但是还是显示没有定义。来看一下解决方法。

问题描述:

在publish_name.rb文件中定义了变量DB_CLASS

DB_CLASS = {}

运行项目的时候报错

NameError: uninitialized constant DB_CLASS
问题查看:

先进入控制台,看看常量是否被正确定义了

#输入rails c进入控制台
xuzhaoning@xuchaoningdeMacBook-Air:~/private_data$ rails c
#输入DB_CLASS返回{},说明已经被定义了
[1] pry(main)> DB_CLASS
=> {}

如果控制台中,显示该变量已经被定义,那么我们需要重启项目,如果控制台中就报错NameError: uninitialized constant DB_CLASS那么应该检查一下你的publish_name.rb文件中这个变量是否被正确定义

问题解决:

控制台中显示该变量被定义了,但是运行项目时还是报错,那就应该重启一下项目。先看一下项目是用puma启动的还是unicorn启动的,然后对应杀死进程,重启项目。

1、如果项目直接rails s启动的,那么ctrl + c停止项目,rails s启动项目就可以实现重启。
2、项目是puma启动的(默认)
#查找puma进程
/vagrant/data_system$ ps -axu | grep puma
#系统返回两条信息,第一条是项目的puma进程,第二条是你当前查找动作的进程。
vagrant   2088 50.8  3.7 764332 76048 pts/0    Tl   02:35   0:03 puma 3.12.0 (tcp://0.0.0.0:3000) [data_system]
vagrant   2136  0.0  0.0  10468   916 pts/0    S+   02:35   0:00 grep --color=auto puma

#杀死puma进程
/vagrant/data_system$ kill -9 2088

#启动puma,注意ip地址换成自己项目的ip,-e后面的环境换成你的启动环境
puma -b tcp://192.168.1.233:8882 -e production -d
3、项目是unicorn启动的
#查找unicorn进程
/vagrant/data_system$ ps -axu | grep unicorn
#系统返回两条信息,第一条是项目的unicorn进程,第二条是你当前查找动作的进程。
1001      5475  0.0  0.3 370856 102656 ?       Sl   Jan23   0:04 unicorn_rails master -c ./config/unicorn.rb -D
1001     29178  0.0  0.0  17980   936 pts/5    R+   10:46   0:00 grep unicorn

#杀死unicorn进程
/vagrant/data_system$ kill -9 5475

#启动unicorn
bundle exec unicorn_rails -c ./config/unicorn.rb  -D

现在再运行项目,已经不报错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值