我被分配在我们(生产)订单管理应用的信息中心中查找错误。它显示错误的数据。由于我没有在本地拥有该特定数据,并且无法很快获得,我将不得不在生产应用中执行此操作。
我以前从未使用过或在以前正在运行的应用中工作,并且不了解最佳做法,禁忌,安全预防措施等。
如果有人可以提供一些线索,从哪里开始阅读(软件,工具,教程......),这将对我有很大帮助。出于某种原因,我只找到有关如何准备和部署Rails应用程序的信息。但不是关于如何实际管理正在运行的应用程序(已由其他人部署)。
一个例子:由于我需要将统计数据与实际数据进行比较,我想运行一个控制台(rails console --sandbox
)并浏览一下,发起一些查询。我试过了:
www/project-name/current
)rails console production
但最后一个命令给了我:
The program 'rails' can be found in the following packages:
* ruby-railties-3.2
* ruby-railties-4.0
所以我想我不应该这样做。 那我怎么调查这样的错误呢?直接查询数据库似乎很危险。
任何提示? THX!
答案 0 :(得分:4)
正如@ ahmed-samir-shahin所写,您需要使用bundler来获取当前的ruby环境。当我必须在我的项目中调试生产错误时,我通常使用像
这样的命令RAILS_ENV=production bundle exec rails console
我倾向于使用ENV
var而不是rails console <env>
符号。
正如您所指出的,某些仪表板上发生了错误。我假设您只是从那里读取数据库中的数据。如果是这样,那么我使用所涉及的代码(很可能是来自控制器动作的代码)来尝试调试行为。
通过在控制台中运行代码,您可以缩小范围以防止事情变得混乱。这是我通常在涉及某种紧急情况时所做的事情,并且仅在您从数据库中读取数据时。
但是你应该尝试让某人在可以安全使用数据的临时环境中提供数据。
找出问题发生的原因后,开始在本地计算机上设置测试用例并解决问题。 :)
<强>替代强>
在rails控制台中运行代码/查询。存储结果(复制和粘贴)并重用数据以创建测试用例,然后可以在本地计算机上进行调试。
一般建议 - 向老板询问策略
一般情况下,您应该与您的经理讨论如何处理这类情况。团队中的每个人如何解决生产系统中的问题非常重要。我认为应该对这种紧急情况负责。在您调试生产问题的第一步时,贵公司的一些经验丰富的人员应该帮助/协助您。
我认为培养你在该领域的最佳利益是公司的最佳利益。 Imho贵公司必须提供一些工具,以便轻松解决问题。否则这样的调试会话将永远。无论如何不知道贵公司的结构如何:)