【问题标题】:Weird issue while deploying ruby on rails app to AWS将 ruby​​ on rails 应用程序部署到 AWS 时出现奇怪的问题
【发布时间】:2014-05-28 08:14:47
【问题描述】:

我目前正在尝试在 AWS 服务器上设置 cronjobs,但是当我尝试运行脚本/rails 文件时,我收到以下消息:

-bash: script/rails: /usr/bin/ruby^M: bad interpreter: No such file or directory

虽然脚本/rails 文件包含以下内容:

#!/usr/bin/ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.

APP_PATH = File.expand_path('../../config/application',  __FILE__)
require File.expand_path('../../config/boot',  __FILE__)
require 'rails/commands'

无论出于何种原因,在我看来,第一行都附加了一个额外的 ^M。另请注意,我正在 Windows 上开发并部署到 AWS ubuntu 服务器。有谁知道我如何解决这个问题?我试图提供尽可能多的指导,但这是一个奇怪的问题。注意:我尝试通过 ssh 在 ubuntu 机器上创建文件,但是当我执行脚本/rails 时它会尝试自行执行 rails。 谢谢, 科迪

【问题讨论】:

  • 另外,每当我运行时,我都会得到路径 /usr/bin/ruby

标签: ruby-on-rails ruby amazon-web-services


【解决方案1】:

可能是行结束问题,其中 windows 表示换行符与 linux 不同,因此当您上传文件时,它不会被正确解释。如果您在服务器上使用 vim 或 vi 打开文件,您应该会在行尾看到 ^M(Control-M)字符。

如果您通过 ftp 上传,您可以尝试以 binmode 上传该文件,这可能会解决问题。否则,您可以使用 vi 打开文件并删除服务器上的违规字符:http://www.tech-recipes.com/rx/150/remove-m-characters-at-end-of-lines-in-vi/。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我假设您在 Windows 计算机上创建了这个脚本。 Windows 使用 \r\n 作为回车符(换行符),而 linux 只使用 \n。这意味着当您将在 Windows 上编写的脚本传输到 linux 机器上时,额外的\r 字符有时会显示为^M。有一些修复,最简单的一个就是通过sed 运行文件并替换这些字符:

    sed -i 's/\r$//' filename
    

    例如:

    ➜  echo -ne "hello\r\nworld" > example.txt
    ➜  cat example.txt | od -c
    0000000   h   e   l   l   o  \r  \n   w   o   r   l   d
    0000014
    ➜  sed -i 's/\r$//' example.txt
    ➜  cat example.txt | od -c
    0000000   h   e   l   l   o  \n   w   o   r   l   d
    

    其他选项can be found here

    【讨论】:

    • 很高兴它有帮助,您可以通过单击左侧的勾号来接受正确的答案。
    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多