windows heroku запустить rake db: ошибка переноса "/usr/bin/env: ruby.exe: такого файла или каталога нет"
Я довольно новичок в Rails, и большую часть этого я следовал учебнику по Ruby on Rails. С тех пор я решил сделать свое собственное приложение, но с использованием бета-версии Rails 4. Я установил PostgreSQL на свой локальный компьютер (Windows 7) и завершил разработку. Все отлично работает! (Я люблю Rails гораздо больше, чем работу на C#, ASP, .NET, которую я зарабатываю на жизнь!)
Однако, как только я решил подтолкнуть Героку, я выдернул свои волосы. До толчка к 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 (не heroku
жемчужина.) Первая ошибка сказала мне, что мне нужно убедиться, что мой 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
и это дает ту же ошибку. Я использую " Начало работы с Rails 4.x" в Heroku, чтобы перенести приложение Rails 4 в Heroku. Любая помощь будет принята с благодарностью!
О, у меня тоже была проблема после запуска:
c:\Sites\elmx>gem install rails --pre
Я решил это, добавив C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;
в мою переменную среды Path в Windows 7 (она выдала мне ошибку, что она не может найти рельсы при попытке выполнить что-либо, например:
rails -v
rails g controller User
Но если бы я просто набрал:
rails
Это дало бы мне все команды, которые я мог использовать (как будто бы rails -h
)
Я настроил свой компьютер с помощью установщика Windows Rails, а затем установил гем Rails 4. Это очень расстраивает, и я искал в интернете, пытаясь найти кого-то с той же проблемой.
РЕДАКТИРОВАТЬ 1:
Я просто удалил свою переменную среды Path пользователя и изменил системную переменную среды Path, чтобы она выглядела так:
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
И тогда запускаются грабли и переносится моя база данных на 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
является. Единственное, что я могу догадаться, это то, что PATH
для Windows. Если это так, то почему сервер не знает, где ruby.exe
является?
Я сделал приложение, не относящееся к Rails 4, и смог опубликовать его в Heroku и просмотреть без проблем. Это действительно действует мне на нервы.
4 ответа
Вам необходимо изменить в вашем приложении первую строку из 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
Это работа для меня.
У меня была похожая проблема, и, как уже говорили другие, изменение ниже помогло.
#!/usr/bin/env ruby.exe
в #!/usr/bin/env ruby
Однако мне также нужно было удалить некоторые скрытые возвраты каретки, которые все еще присутствовали при разработке в Windows (я полагаю?).
я использовал dos2unix
сделать это.
dos2unix bin/bundle bin/rake bin/rails
После этого я совершил свои изменения, подтолкнул к героку и все было хорошо.
У меня была такая же проблема, изменил ruby.exe на ruby в трех файлах, как описано выше, выполнил
git push heroku master
шаг, который сказал мне, что все было в курсе. Пытаясь
heroku run rake db:migrate
шаг снова, это все еще не работало; Я получил ту же ошибку об отсутствии такого файла или каталога для ruby.exe. Я изучил свой gemfile.lock в соответствии с указаниями, но не увидел ничего похожего на Windows.
Затем я выполнил это:
git add .
git commit -m "My comment"
и попробовал еще раз с
git push heroku master
На этот раз прошли многочисленные сообщения, в том числе:
Removing Gemfile.lock
потому что он был создан на Windows.
так что, возможно, с этим было что-то не так, и я просто не знал, что мне в этом нужно искать.
Попытка снова
heroku run rake db:migrate
похоже, сработало, как я получил
Running rake db:migrate
подключен к терминалу... работает 3260
== CreateUsers: перенос ================================================== =======
- create_table(: пользователи)
-> 0,0409 с
== CreateUsers: перенесено (0.0412s) ==========================================
Мое лучшее предположение заключается в том, что изменения, связанные с удалением.exe из комплекта, граблей и рельсов, фактически не выдвигаются с первой попытки
гит пуш герой мастер
и
мерзавец добавить.
а также
git commit -m "Мой комментарий"
были необходимы, чтобы заставить его подтолкнуть вверх. Это моя первая попытка чего-либо с помощью git/heroku/ruby, поэтому я не знаю достаточно, чтобы сказать, почему потребовались другие две команды, но оставлю свой опыт документированным здесь на случай, если это поможет кому-то еще.
Большое спасибо за подсказку выше, что это был.exe в этих трех файлах, который вызвал проблему.
bin/bundle
bin/rails
bin/rake
Вместо
#!/usr/bin/env ruby.exe
должно быть
#!/usr/bin/env ruby
(спасибо предыдущему посту)
убедитесь, что в gemfile.lock нет ссылок на окна - их можно просто удалить
затем
git push heroku master
если есть еще проблемы используйте
логи герою (копирование текста в текстовый редактор облегчает вырезание и вставку для решений)
Попробуй это:
sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
а затем установите Нокогири:
gem install nokogiri