9

我在这里对 Rails 很陌生,并且大部分内容我都遵循了 Ruby on Rails 教程。从那以后,我决定制作自己的应用程序,但使用的是测试版的 Rails 4 gem。我已经在我的本地机器(Windows 7)上安装了 PostgreSQL 并完成了开发。一切都很好!(我对 Rails 的热爱远胜于我赖以谋生的 C#、ASP、.NET 工作!)

然而,一旦我决定推到 Heroku,我就一直在拔头发。在推送到 Heroku 之前,我做了以下标准:

c:\Sites\elms>git add .
c:\Sites\elms>git commit -m "My comment"
c:\Sites\elms>git push
c:\Sites\elms>git push heroku master

我已经下载并安装了 Heroku Toolbelt(不是herokugem。)第一个错误告诉我我需要确保我Gemfile指定的 Ruby >= 1.9.3,所以我在我的顶部添加了“ruby 1.9.3” Gemfile

source 'https://rubygems.org'
ruby "1.9.3"

gem 'rails', '4.0.0.beta1'

gem 'pg'
gem 'haml-rails'
gem 'httparty'
gem 'devise', git: 'git://github.com/plataformatec/devise.git', branch: 'rails4'
gem 'cancan'
gem 'bootstrap-sass'
gem 'formtastic'
gem 'formtastic-plus-bootstrap'

group :development do
  gem 'annotate'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'guard-spork'
  gem 'guard-rspec'
  gem 'meta_request'
  gem 'rb-notifu'
  gem 'schema_to_scaffold'
  gem 'wdm', :platforms => [:mswin, :mingw], :require => false
  gem 'win32console'
end

group :development, :test do
  gem 'rspec-rails'
  gem 'pry'
  gem 'spork-rails', git: 'git://github.com/sahilm/spork-rails.git', branch: 'rails-4'
  gem 'spork', '~> 1.0.0rc3'
end

group :test do
  gem 'capybara'
  gem 'factory_girl_rails'
  gem "shoulda-matchers"
end

group :assets do
  gem 'sass-rails',   '~> 4.0.0.beta1'
  gem 'coffee-rails', '~> 4.0.0.beta1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'    
gem 'turbolinks'
gem 'jbuilder', '~> 1.0.1'

推送最终没有任何问题,但是当我尝试迁移数据库时,我得到了以下信息:

c:\Sites\elms>heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.2205
/usr/bin/env: ruby.exe: No such file or directory

我也试过: heroku run bin/rake db:migrate,它给出了同样的错误。我在 Heroku 上使用 Rails 4.x 入门将我的 Rails 4 应用程序推送到 Heroku。任何帮助将不胜感激!

哦,我运行后也遇到了问题:

c:\Sites\elmx>gem install rails --pre

我通过在 Windows 7 中添加C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;到我的环境路径变量来解决这个问题(它给了我一个错误,它在尝试执行任何东西时找不到轨道,例如:

rails -v
rails g controller User

但如果我只输入:

rails

它会给我所有可以使用的命令(就像运行一样rails -h

我使用 Windows Rails 安装程序设置我的机器,然后安装 Rails 4 gem。这非常令人沮丧,我已经在互联网上搜索了试图找到有同样问题的人。

编辑1:

我刚刚删除了我的用户路径环境变量并将我的系统路径环境变量修改为如下所示:

 C:\RailsInstaller\Ruby1.9.3\bin;C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;C:\Program Files (x86)\git\cmd;C:\Program Files (x86)\Heroku\bin

将我的路径变量更新为上述并卸载 Heroku Toolbelt,然后重新安装它(因此 Heroku 部分位于路径变量中)并尝试了以下操作:

c:\Sites\elms>ruby -v
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]

c:\Sites\elms>rails -v
Rails 4.0.0.beta1

c:\Sites\elms>heroku -v
 !    `-v` is not a heroku command.
 !    Perhaps you meant `-h`.
 !    See `heroku help` for a list of available commands.

c:\Sites\elms>heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.2100
/usr/bin/env: ruby.exe: No such file or directory

c:\Sites\elms>heroku run bin/rake db:migrate
Running `bin/rake db:migrate` attached to terminal... up, run.2872
/usr/bin/env: ruby.exe: No such file or directory

编辑2:

所以我在这次冒险中走得更远。我发现我可以执行:

c:\Sites\elms>heroku run bash
~ $ cd bin
~/bin $ ruby rake db:migrate

然后运行 ​​rake 并在 Heroku 上迁移我的数据库。但问题越来越严重!我尝试导航到该页面,它告诉我有问题,所以我运行日志文件,这就是我得到的:

c:\Sites\elms>heroku logs
2013-03-16T05:34:20+00:00 heroku[api]: Enable Logplex by
2013-03-16T05:34:20+00:00 heroku[api]: Release v2 created by 
2013-03-16T05:34:36+00:00 heroku[slugc]: Slug compilation started
2013-03-16T05:35:37+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 13423 -e $RAILS_ENV`
2013-03-16T05:35:37+00:00 heroku[slugc]: Slug compilation finished
2013-03-16T05:35:37+00:00 app[web.1]: bash: bin/rails: No such file or directory

2013-03-16T05:35:39+00:00 heroku[web.1]: Process exited with status 127
2013-03-16T05:35:39+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 33539 -e $RAILS_ENV`
2013-03-16T05:35:40+00:00 app[web.1]: /usr/bin/env: ruby.exe: No such file or directory
2013-03-16T05:35:41+00:00 heroku[web.1]: Process exited with status 127
2013-03-16T05:35:41+00:00 heroku[web.1]: State changed from starting to crashed
2013-03-16T05:35:41+00:00 heroku[web.1]: State changed from crashed to starting
2013-03-16T05:35:44+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 23452 -e $RAILS_ENV`
2013-03-16T05:35:44+00:00 app[web.1]: /usr/bin/env: ruby.exe: No such file or directory

这真是令人沮丧。我不知道到底/usr/bin/env是什么。我唯一能猜到的是它就像PATHWindows 一样。如果是这样,为什么服务器不知道在哪里ruby.exe

我确实制作了一个非 Rails 4 应用程序,并且能够将其发布到 Heroku 并毫无问题地查看它。这真的让我很紧张。

4

5 回答 5

43

您需要在应用程序中更改 3 个文件的第一行:

bin/bundle
bin/rails
bin/rake

反而

#!/usr/bin/env ruby.exe

一定是

#!/usr/bin/env ruby

这就是错误的原因:

/usr/bin/env: ruby.exe: No such file or directory

然后你就成功了:

heroku run rake db:migrate

这对我有用。

于 2013-04-28T21:36:58.440 回答
3

我遇到了类似的问题,正如其他人已经说过的那样,更改以下内容有所帮助。

#!/usr/bin/env ruby.exe#!/usr/bin/env ruby

但是,我还需要删除最初在 Windows 上开发时仍然存在的一些隐藏的回车符(我猜?)。

我曾经dos2unix这样做过。

dos2unix bin/bundle bin/rake bin/rails

在那之后,我提交了我的更改,推送到heroku,一切都很好。

于 2015-07-23T15:04:48.750 回答
2

我遇到了同样的问题,如上所述将三个文件中的ruby.exe更改为ruby,执行


    git push heroku master
步骤,它告诉我一切都是最新的。尝试

    heroku run rake db:migrate
再走一步,还是不行;关于ruby.exe没有这样的文件或目录,我得到了同样的错误。我按照指示检查了我的 gemfile.lock,但没有看到任何看起来像 windows-y 的东西。

然后我执行了这些:


    git add .
    git commit -m "My comment"
并再次尝试

    git push heroku master
这一次,大量消息通过,包括:

    Removing Gemfile.lock because it was generated on Windows.
所以也许它有问题,我只是不知道我应该在其中寻找什么。

再次尝试


    heroku run rake db:migrate
看起来很有效,因为我得到了

    Running rake db:migrate attached to terminal... up, run.3260
    ==  CreateUsers: migrating ====================================================
    -- create_table(:users)
       -> 0.0409s
    ==  CreateUsers: migrated (0.0412s) ===========================================

我最好的猜测是,从 bundle、rake 和 rails 中删除 .exe 的更改实际上并没有在第一次尝试 git push heroku master 和 git add 时被推上去。并且 git commit -m "My comment" 是必要的,以使其被推高。这是我第一次尝试使用 git/heroku/ruby,所以我不知道为什么需要其他两个命令,但请把我的经验记录在这里,以防它帮助其他人。
非常感谢上面的线索,是这三个文件中的 .exe 导致了问题。

于 2013-08-15T17:09:00.827 回答
1
bin/bundle
bin/rails
bin/rake

反而

#!/usr/bin/env ruby.exe

一定是

#!/usr/bin/env ruby

(感谢之前的帖子)

确保 gemfile.lock 中没有对 windows 的引用——它们可以被删除

然后

git push heroku master

如果还有问题使用

heroku 日志(将文本复制到文本编辑器可以更轻松地剪切和粘贴解决方案)

于 2013-07-22T08:54:12.893 回答
0

尝试这个:

sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev

然后安装 Nokogiri:

gem install nokogiri
于 2019-04-11T07:39:17.667 回答