【问题标题】:Why is an asterisk being replaced with all directories under / after deployment?为什么部署后星号被替换为 / 下的所有目录?
【发布时间】:2012-01-30 15:56:49
【问题描述】:

我希望有人可以对我在上次部署中发现的问题提供一些见解。我有一个 erb 页面,里面有一些 javascript。在我尝试将数字相乘之前没有任何问题。出于某种原因,在我部署到服务器后,所有星号都被替换为命令输出的样子

~$ ls /

所以,澄清一下,为什么这段代码

<script type="text/javascript">
  a = b * 2;
</script>

成为

<script type="text/javascript">
  a = b bin boot dev etc lib sbin usr var 2;
</script>

在我部署后渲染时?这只是现在令人沮丧。提前感谢您提供任何想法或答案。

编辑 我检查了我的源代码,星号没有改变。只有当我尝试点击页面时它们才会改变。问题不在于 capistrano。

【问题讨论】:

  • 你是如何部署这个文件的?通过从源存储库中复制它?通过使用echo?
  • 用 capistrano 复制我的源代码库。 Capistrano on github
  • 令人担忧的是,这样的事情最终会在 shell 中执行,或者以某种方式插入。通常git 方法只是逐字复制文件。
  • 对不起tadman,我错了更改源代码。

标签: javascript ruby-on-rails ruby deployment erb


【解决方案1】:

这是由于外壳扩展。如果当前目录是/

echo *
bin boot dev etc home lib lib64 logs_backup media mnt opt proc root run sbin srv sys tmp usr var

试试

"a = b * 2"

如果要计算,请使用

a=$(echo "$b*2" | bc)

(可能有比上述更好的方法。)

【讨论】:

  • 抱歉,您误会了。当我部署到服务器时,我的源代码正在发生变化。我没有在终端中输入任何 *。
  • 这怎么可能?我通过将 javascript 函数移动到全局 js 页面来解决此问题。
  • WTF。无法为您提供更多帮助,但这是一个 shell 扩展 - 检查 capistrano 实际复制文件的方式。
  • 对不起塔斯,我的源代码没有改变。只有一些文件受此影响。但是把我的代码放在“”里面是行不通的。
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 2013-09-10
  • 2012-11-25
  • 2021-12-19
  • 1970-01-01
  • 2015-04-13
  • 2018-09-10
  • 1970-01-01
相关资源
最近更新 更多