Ruby on rails 如果在Rails控制台中修改代码,会影响并行运行的服务器吗?

Ruby on rails 如果在Rails控制台中修改代码,会影响并行运行的服务器吗?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,是否可以在一个shell中运行“rails控制台”,然后在另一个shell中运行“rails服务器”,然后将控制台中的代码更改渗透到正在运行的应用程序中?大概这是不可能的,但我想看看是否有办法 编辑:两者都在同一环境中运行。所谓代码更改,我指的是类定义的更改(例如,在Post模型上重写方法) 如果您在同一环境中更改控制台中的数据,那么它将在浏览器中更改。如果您修改任何数据,这确实会渗透到整个系统中。但是,通过打开类和“猴子补丁”对方法进行动态修改不会影响正在运行的应用程序,除非修改的方法修改了数

是否可以在一个shell中运行“rails控制台”,然后在另一个shell中运行“rails服务器”,然后将控制台中的代码更改渗透到正在运行的应用程序中?大概这是不可能的,但我想看看是否有办法


编辑:两者都在同一环境中运行。所谓代码更改,我指的是类定义的更改(例如,在Post模型上重写方法)

如果您在同一环境中更改控制台中的数据,那么它将在浏览器中更改。

如果您修改任何数据,这确实会渗透到整个系统中。但是,通过打开类和“猴子补丁”对方法进行动态修改不会影响正在运行的应用程序,除非修改的方法修改了数据


但是,建议在具有不同数据的不同环境中运行控制台,以避免损害正在运行的应用程序。

您所说的“代码更改”是什么意思?您可以使用console更新、插入或删除数据库中的数据。这就是全部,它将影响正在运行的应用程序。我说代码是为了将其与数据区分开来。也就是说,如果我在我的Post类上改进一个方法,它将渗透到运行在控制台上的Rails版本中。不,它不会。Mario的回答是正确的。更详细地说,console应用程序上的monkeypatched代码不会影响服务器应用程序,因为您正在运行不同的实例,并且只有服务器应用程序提供实时流量服务。数据更改(副作用)将无处不在,因为默认情况下,您的控制台和服务器应用程序将使用同一数据库之类的共享资源。请注意,控制台代码更改限制并不总是适用于其他堆栈。例如,在Elixir中,您可以将您的控制台连接到正在运行的为流量提供服务的节点,重新加载模块,然后更改会影响该服务器上运行的代码。