【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

在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


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

目录
相关文章
|
Ruby
|
Ruby
|
6月前
|
人工智能 IDE 开发工具
JetBrains RubyMine 2025.1 发布 - 最智能的 Ruby 与 Rails IDE
JetBrains RubyMine 2025.1 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE
144 30
JetBrains RubyMine 2025.1 发布 - 最智能的 Ruby 与 Rails IDE
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
前端开发 测试技术 API
揭秘Ruby on Rails的神秘力量:如何让你的Web应用飞起来?
【8月更文挑战第31天】Ruby on Rails(简称RoR)是一个基于Ruby语言的开源Web应用框架,自2005年发布以来,因简洁的语法、强大的功能和高效的开发效率而广受好评。RoR采用MVC架构,提高代码可读性和可维护性,拥有庞大的社区和丰富的库支持。本文通过示例代码展示其强大之处,并介绍RoR的核心概念与最佳实践,帮助开发者更高效地构建Web应用。
369 0
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
162 0