使用devise正确安装Rails(HEAD版本)的方法

时间:2018-09-24 20:45:13

标签: ruby-on-rails devise

我在这里做错了什么?我只是想让设计与Edge Rails应用程序一起工作。我收到错误“不支持直接从ActiveRecord :: Migration继承”。 使用here中描述的技术来制作滑轨骨架 设计安装步骤主要来自https://github.com/plataformatec/devise/blob/master/README.md

$ cd /tmp
$ ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
$ rbenv shell 2.5.1
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
$ echo "source 'https://rubygems.org'" >> Gemfile
$ echo "gem 'rails', git: 'https://github.com/rails/rails.git'" >> Gemfile
$ bundle install
Fetching https://github.com/rails/rails.git
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using rake 12.3.1
Using concurrent-ruby 1.0.5
Using i18n 1.1.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using builder 3.2.3
Using erubi 1.7.1
Using mini_portile2 2.3.0
Using nokogiri 1.8.4
Using rails-dom-testing 2.0.3
Using crass 1.0.4
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using rack 2.0.5
Using rack-test 1.1.0
Using actionpack 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using nio4r 2.3.1
Using websocket-extensions 0.1.3
Using websocket-driver 0.7.0
Using actioncable 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using globalid 0.4.1
Using activejob 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using mini_mime 1.0.1
Using mail 2.7.0
Using actionmailer 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using activemodel 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using activerecord 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using mimemagic 0.3.2
Using marcel 0.3.3
Using activestorage 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using bundler 1.16.2
Using method_source 0.9.0
Using thor 0.20.0
Using railties 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Using rails 6.0.0.alpha from https://github.com/rails/rails.git (at master@0627442)
Bundle complete! 1 Gemfile dependency, 40 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
$
$
$ bundle exec rails new . --dev --force
       exist
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
       force  Gemfile
         run  git init from "."
Initialized empty Git repository in /private/tmp/.git/
      create  package.json
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/javascripts/application.js
      create  app/assets/javascripts/cable.js
      create  app/assets/stylesheets/application.css
      create  app/channels/application_cable/channel.rb
      create  app/channels/application_cable/connection.rb
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/jobs/application_job.rb
      create  app/mailers/application_mailer.rb
      create  app/models/application_record.rb
      create  app/views/layouts/application.html.erb
      create  app/views/layouts/mailer.html.erb
      create  app/views/layouts/mailer.text.erb
      create  app/assets/images/.keep
      create  app/assets/javascripts/channels
      create  app/assets/javascripts/channels/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/rails
      create  bin/rake
      create  bin/setup
      create  bin/update
      create  bin/yarn
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/cable.yml
      create  config/puma.rb
      create  config/storage.yml
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/application_controller_renderer.rb
      create  config/initializers/assets.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/content_security_policy.rb
      create  config/initializers/cookies_serializer.rb
      create  config/initializers/cors.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_framework_defaults_6_0.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/master.key
      append  .gitignore
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/apple-touch-icon-precomposed.png
      create  public/apple-touch-icon.png
      create  public/favicon.ico
      create  public/robots.txt
      create  tmp
      create  tmp/.keep
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor
      create  vendor/.keep
      create  test/fixtures
      create  test/fixtures/.keep
      create  test/fixtures/files
      create  test/fixtures/files/.keep
      create  test/controllers
      create  test/controllers/.keep
      create  test/mailers
      create  test/mailers/.keep
      create  test/models
      create  test/models/.keep
      create  test/helpers
      create  test/helpers/.keep
      create  test/integration
      create  test/integration/.keep
      create  test/test_helper.rb
      create  test/system
      create  test/system/.keep
      create  test/application_system_test_case.rb
      create  storage
      create  storage/.keep
      create  tmp/storage
      create  tmp/storage/.keep
      remove  config/initializers/cors.rb
      remove  config/initializers/new_framework_defaults_6_0.rb
         run  bundle install
Fetching https://github.com/rails/web-console.git
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies....
Using rake 12.3.1
Using concurrent-ruby 1.0.5
Using i18n 1.1.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using builder 3.2.3
Using erubi 1.7.1
Using mini_portile2 2.3.0
Using nokogiri 1.8.4
Using rails-dom-testing 2.0.3
Using crass 1.0.4
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using rack 2.0.5
Using rack-test 1.1.0
Using actionpack 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using nio4r 2.3.1
Using websocket-extensions 0.1.3
Using websocket-driver 0.7.0
Using actioncable 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using globalid 0.4.1
Using activejob 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using mini_mime 1.0.1
Using mail 2.7.0
Using actionmailer 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using activemodel 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using activerecord 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using mimemagic 0.3.2
Using marcel 0.3.3
Using activestorage 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using public_suffix 3.0.3
Using addressable 2.5.2
Using io-like 0.3.0
Using archive-zip 0.11.0
Using bindex 0.5.0
Using bundler 1.16.2
Using byebug 10.0.2
Using xpath 3.1.0
Using capybara 3.8.1
Using ffi 1.9.25
Using childprocess 0.9.0
Using chromedriver-helper 2.1.0
Using coffee-script-source 1.12.2
Using execjs 2.7.0
Using coffee-script 2.4.1
Using method_source 0.9.0
Using thor 0.20.0
Using railties 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using coffee-rails 4.2.2
Using multi_json 1.13.1
Using jbuilder 2.7.0
Using rb-fsevent 0.10.3
Using rb-inotify 0.9.10
Using ruby_dep 1.5.0
Using listen 3.1.5
Using puma 3.12.0
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Using rails 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using rubyzip 1.2.2
Using sass-listen 4.0.0
Using sass 3.6.0
Using tilt 2.0.8
Using sass-rails 5.0.7
Using selenium-webdriver 3.14.0
Using sqlite3 1.3.13
Using turbolinks-source 5.2.0
Using turbolinks 5.2.0
Using uglifier 4.1.19
Using web-console 3.7.0 from https://github.com/rails/web-console.git (at master@a46d9ff)
Bundle complete! 15 Gemfile dependencies, 73 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
         run  bundle binstubs bundler
$
$
$
$
$ bundle exec rails server
=> Booting Puma
=> Rails 6.0.0.alpha application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
Started GET "/" for 127.0.0.1 at 2018-09-24 13:36:08 -0700
   (1.7ms)  SELECT sqlite_version(*)
Processing by Rails::WelcomeController#index as HTML
  Rendering /Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534/railties/lib/rails/templates/rails/welcome/index.html.erb
  Rendered /Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534/railties/lib/rails/templates/rails/welcome/index.html.erb (6.9ms)
Completed 200 OK in 17ms (Views: 10.8ms | ActiveRecord: 0.0ms)


^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: 2018-09-24 13:36:12 -0700 ===
- Goodbye!
Exiting
$
$
$ # Yay! You’re on Rails!
$
$
$
$ echo 'gem "devise"' >> Gemfile
$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using rake 12.3.1
Using concurrent-ruby 1.0.5
Using i18n 1.1.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using builder 3.2.3
Using erubi 1.7.1
Using mini_portile2 2.3.0
Using nokogiri 1.8.4
Using rails-dom-testing 2.0.3
Using crass 1.0.4
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using rack 2.0.5
Using rack-test 1.1.0
Using actionpack 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using nio4r 2.3.1
Using websocket-extensions 0.1.3
Using websocket-driver 0.7.0
Using actioncable 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using globalid 0.4.1
Using activejob 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using mini_mime 1.0.1
Using mail 2.7.0
Using actionmailer 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using activemodel 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using activerecord 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using mimemagic 0.3.2
Using marcel 0.3.3
Using activestorage 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using public_suffix 3.0.3
Using addressable 2.5.2
Using io-like 0.3.0
Using archive-zip 0.11.0
Using bcrypt 3.1.12
Using bindex 0.5.0
Using bundler 1.16.2
Using byebug 10.0.2
Using xpath 3.1.0
Using capybara 3.8.1
Using ffi 1.9.25
Using childprocess 0.9.0
Using chromedriver-helper 2.1.0
Using coffee-script-source 1.12.2
Using execjs 2.7.0
Using coffee-script 2.4.1
Using method_source 0.9.0
Using thor 0.20.0
Using railties 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using coffee-rails 4.2.2
Using orm_adapter 0.5.0
Using responders 0.6.5
Using warden 1.2.7
Using devise 4.5.0
Using multi_json 1.13.1
Using jbuilder 2.7.0
Using rb-fsevent 0.10.3
Using rb-inotify 0.9.10
Using ruby_dep 1.5.0
Using listen 3.1.5
Using puma 3.12.0
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Using rails 6.0.0.alpha from source at `/Users/user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/rails-06274428e534`
Using rubyzip 1.2.2
Using sass-listen 4.0.0
Using sass 3.6.0
Using tilt 2.0.8
Using sass-rails 5.0.7
Using selenium-webdriver 3.14.0
Using sqlite3 1.3.13
Using turbolinks-source 5.2.0
Using turbolinks 5.2.0
Using uglifier 4.1.19
Using web-console 3.7.0 from https://github.com/rails/web-console.git (at master@a46d9ff)
Bundle complete! 16 Gemfile dependencies, 78 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
$
$
$
$
$
$
$
$
$ bundle exec rails generate devise:install
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================
$
$
$
$
$
$ bundle exec rails generate devise User
      invoke  active_record
      create    db/migrate/20180924203813_devise_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      insert    app/models/user.rb
       route  devise_for :users
$
$
$
$
$
$ bundle exec rails server
=> Booting Puma
=> Rails 6.0.0.alpha application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
Started GET "/" for 127.0.0.1 at 2018-09-24 13:38:24 -0700
   (1.4ms)  SELECT sqlite_version(*)

ActiveRecord::PendingMigrationError (

Migrations are pending. To resolve this issue, run:

        rails db:migrate RAILS_ENV=development

):
^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: 2018-09-24 13:38:31 -0700 ===
- Goodbye!
Exiting
$
$
$
$ # ActiveRecord::PendingMigrationError
$
$ bundle exec rake db:migrate
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

  class DeviseCreateUsers < ActiveRecord::Migration[4.2]
/private/tmp/db/migrate/20180924203813_devise_create_users.rb:3:in `<top (required)>'
/Users/user/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/user/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'

Caused by:
StandardError: Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

  class DeviseCreateUsers < ActiveRecord::Migration[4.2]
/private/tmp/db/migrate/20180924203813_devise_create_users.rb:3:in `<top (required)>'
/Users/user/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/user/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
$

2 个答案:

答案 0 :(得分:1)

似乎devise宝石与您正在使用的Rails版本(6.0.0.alpha)不兼容

它知道的最新的Rails是Rails 5

https://github.com/plataformatec/devise/blob/5-rc/lib/generators/active_record/devise_generator.rb#L94-L98

由于您使用的是6.0.0.alpha,因此它会创建迁移而未指定预期的Rails版本。在现代的Rails中不允许这样做,因此会引发错误消息并阻止迁移运行。

————————————————————————————

您正在使用的edge Rails版本看起来非常不成熟,尚未准备好投入生产。甚至他们的发行说明也没有完成,并且在Github上有很多指向不存在的变更日志的无效链接: https://edgeguides.rubyonrails.org/6_0_release_notes.html

我建议暂时不要使用此版本,并保持最新的稳定发行版(今天是5.2.1)。

替换

echo "gem 'rails', git: 'https://github.com/rails/rails.git'" >> Gemfile

使用

echo "gem 'rails', '~> 5.2.0'" >> Gemfile

解决了该问题。

答案 1 :(得分:0)

嗯,您运行rails db:migrate RAILS_ENV=development吗?