#mysql #ruby-on-rails #ruby-on-rails-3 #rake
#mysql #ruby-on-rails #ruby-on-rails-3 #грабли
Вопрос:
Я новичок в ROR. Я просто следил за учебными пособиями в tutorials point. Я установил следующие драгоценные камни:
abstract (1.0.0)
actionmailer (3.0.3)
actionpack (3.0.3)
activemodel (3.0.3)
activerecord (3.0.3)
activerecord-mysql-adapter-flags (0.0.3)
activerecord-ruby_mysql-adapter (0.1)
activeresource (3.0.3)
activesupport (3.0.3)
arel (2.0.6)
bigdecimal (1.1.0)
builder (2.1.2)
bundler (1.3.5)
erubis (2.6.6)
i18n (0.4.2)
io-console (0.3)
json (1.5.5)
mail (2.2.14)
mime-types (1.16)
minitest (2.5.1)
mysql (2.8.1 x86-mingw32)
polyglot (0.3.1)
rack (1.2.1)
rack-mount (0.6.13)
rack-test (0.5.6)
rails (3.0.3)
railties (3.0.3)
rake (0.9.2.2)
rdoc (3.9.5)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.23)
Когда я попытался запустить rake db:create
его, он выдал мне следующие предупреждения, но все равно создал базы данных.
F:Rails ApplicationsLibrary>rake db:create
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/tas
k' (in RDoc 2.4.2 )' instead.
at C:/Ruby193/lib/ruby/1.9.1/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated. Please include
... Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Library::Application#task called at C:/Ruby193/lib/ruby/gems
/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
и в конце длинного вывода говорилось:
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Но он создал базы данных с именами library_development и library_testing в mysql.
Теперь, когда я запускаю rake db: migrate, в нем говорится следующее:
F:Rails ApplicationsLibrary>rake db:migrate
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/tas
k' (in RDoc 2.4.2 )' instead.
at C:/Ruby193/lib/ruby/1.9.1/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated. Please include
... Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Library::Application#task called at C:/Ruby193/lib/ruby/gems
/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
rake aborted!
Mysql::Error: query: not connected: CREATE TABLE `schema_migrations` (`version`
varchar(255) NOT NULL) ENGINE=InnoDB
файл gemfile выглядит следующим образом
source 'http://rubygems.org'
gem 'rails', '3.0.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
#gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql', '~>2.8.1'
gem 'activerecord-ruby_mysql-adapter', '~>0.1'
gem 'rdoc'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger (ruby-debug for Ruby 1.8.7 , ruby-debug19 for Ruby 1.9.2 )
# gem 'ruby-debug'
# gem 'ruby-debug19'
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
# gem 'webrat'
# end
Кто-нибудь может мне помочь???
Комментарии:
1. Вы пробовали запускать
bundle exec rake db:create
? Возможно, просто запущена неправильная версия rake.2. Вы видели это matthew.mceachen.us/blog /…
3. @bundacia нет, он выдает такое же предупреждение и ошибку
Ответ №1:
Rails 3.0.3 довольно старый. Последняя ветка 3.x находится на 3.2.18 или новее. Я подозреваю, что вы можете использовать более новый gem с версией Rails, которая слишком стара для ее работы. Если вы опубликуете свой Gemfile как gist, будет легче определить, какие драгоценные камни могут быть проблематичными.
Обычно в таком случае неограниченные драгоценные камни, т. Е. Те, у которых нет явной версии, установленной в файле Gemfile, будут пытаться использовать более новую версию драгоценного камня, чем версия, которую может поддерживать Rails, и сломает приложение.
Обновление: добавленный вами Gemfile содержит только один неограниченный gem: rdoc. Похоже, что этот драгоценный камень использует более старый способ интеграции задач и поэтому может быть связан с более новой версией rake. Мы скорректируем обе версии rake и версию rdoc, чтобы они соответствовали периоду времени, из которого исходил rails 3.0.3.
Версия rdoc, которая была выпущена ближе всего к rails 3.0.3, — 3.0.1. Измените свой Gemfile так, чтобы вместо
gem 'rdoc'
в нем говорится
gem 'rdoc', '~> 3.0.1'
Затем выполните следующие команды, чтобы установить версию rake, наиболее близкую к rails 3.0.3
gem uninstall rake --version 0.9.2.2
gem install rake --version 0.8.7
Теперь запустите bundler, чтобы установить запрошенную вами версию rdoc:
bundle install
И, наконец, используйте bundler для выполнения вашей команды rake, используя конкретные версии драгоценных камней, которые вы просили использовать в Gemfile:
bundle exec rake db:create
bundle exec rake db:migrate
Если это не решит проблему, вы всегда можете принудительно использовать конкретную версию rake, которую вы хотите использовать, например:
bundle exec rake _0.8.7_ db:create
Надеюсь, это поможет.
Комментарии:
1. но rake db: create создает базы данных в mysql. Я отправляю gemfile.
2. да, я решил это. Я только что заменил libmysql.dll с более старой версией в папке ruby / bin.спасибо