我对Ruby比较陌生,我习惯了PHP风格的网络服务器。
我想知道我是否有办法以与PHP相同的方式运行ruby。 Apache是首选,但不是强制性的。
例如,在我的index.php文件中,我将有echo '<p>hello world</p>;
的内容,当我查看网页时,它会显示<p>hello world</p>
,但会被解析为HTML。< / p>
我想知道我是否能够使用ruby做同样的事情,因此index.rb中的puts '<p>hello world</p>'
将显示与index.php相同的内容。
我知道Rails和Sinatra,但我不想让ruby进程不断运行。 Sinatra会很完美,但我必须保持脚本运行,并在每次修改后重新启动它。
我只想保存文件,然后就是全部。一切都已更新,无需运行任何流程。
有没有办法做到这一点?
答案 0 :(得分:5)
你最接近的是Passenger,它是运行基于Rack的Ruby应用程序的Apache和Nginx的支持模块。
它会在必要时启动Ruby进程,并在它们不再使用时终止它们。它实际上非常高效,甚至非常适中的VPS(512MB)也可以处理运行多个站点的大量流量。
只是在服务器上转储.php
文件并在那里工作的模型不可扩展,你很快就会得到一堆代码。现代PHP站点使用像Laravel这样的框架,它有一个路由层,部署应用程序并不像上传一些文件那么简单。如果你将一个好的PHP站点和一个好的Ruby站点进行比较,那里有很多共性,都需要一个适当的部署过程,而不是在服务器上临时转储文件。
一旦习惯了,使用像Capistrano这样的部署管理器比使用FTP的神秘方法容易得多。它可以产生一致的结果,避免在更新期间崩溃您的网站,并且团队可以更有效地使用它,因为使代码正常运行所需的任何操作都以代码表示。部署自动化非常有价值。
听起来我觉得你在服务器上做了很多开发,这是一个你需要打破的坏习惯。创建一个本地开发环境并在那里工作,然后只有在测试后才能实现更改。像Vagrant这样的工具可以让您轻松在计算机上创建服务器环境,如果您的操作系统不利于此类操作系统。如果目标主机是基于Linux的,则可以使用Linux服务器环境在本地进行开发。
默认情况下,Rails有一个自动加载器,它将在开发模式下启动,大多数例行更改会自动应用,而不必重新启动服务器。
我想你会发现,在你克服Rails的初始学习曲线后,你会非常高效。 Sinatra的重量更轻,学习成本更低,但开箱即用也少得多,其非结构化特性可能导致混乱。 Rails有非常强大的约定,有助于指导您在尝试解决问题时,有一个适合所有事情的地方,一切都取而代之。