【问题标题】:Why my rails command works differently with system() than in terminal?为什么我的 rails 命令在 system() 中的工作方式与在终端中的工作方式不同?
【发布时间】:2017-06-30 21:06:26
【问题描述】:

我要运行的命令是rails _3.2.13_ new App

当我在命令行中运行它时,它会创建一个版本为 3.2.13 的 Rails 应用程序,但当我使用 system "rails _3.2.13_ new #{self.name} -T -B" 运行它时,它会创建一个带有最新版本而不是 3.2.13 版本的 Rails 应用程序。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-5


    【解决方案1】:

    这是 Ruby 使用 /bin/sh 执行 shell 命令的结果,而您可能每天都在终端中使用 /bin/bash。每个的加载方式和每个中存在的特定配置都会改变配置。

    如果您在两次调用system 时都运行which rails,并且在您的终端中,您可能会看到不同的路径。检查echo $PATH,您也可能会看到不同的结果。

    要解决这种情况,您可以查看What's the difference between .bashrc, .bash_profile, and .environment?,这将使您更好地了解正在发生的事情,然后调整您的外壳配置以适应。

    【讨论】:

    • 我在两者中都运行了echo $PATH,得到了相同的结果/Users/xxxxx/.rvm/gems/ruby-2.3.3/bin:/Users/xxxxx/.rvm/gems/ruby-2.3.3@global/bin:/Users/xxxxx/.rvm/rubies/ruby-2.3.3/bin:/Users/xxxxx/.rvm/bin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    • 我刚刚发现在终端中运行gem list --local 时,宝石与system() 不同
    • @robzdc 听起来你有一些不同的 ENV 变量。
    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多