已复制 rails 个应用程序,但现在设计不再有效

Copied rails app but now devise is not working anymore

我通过这样做复制了整个 Rails 应用程序:

$ cp your-old-app your-new-app

然后通过这样做为其创建一个新数据库:

rake db:create db:migrate

一切正常。现在我想测试我复制的应用程序并创建一个新用户。不幸的是,这不起作用。我正在使用 gem.

我在尝试注册新测试用户时遇到的错误是:

Started POST "/users/sign_in" for ::1 at 2019-11-12 19:07:42 +0100
Processing by Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"jrmiVvIOB+m2a0WCQWhL4LSpdfw2x9hxP6yhJOC6HVyjXOpTTrxWeF37sTtG/dYaeK1DBr/425svb2zEcO5mhQ==", "user"=>{"email"=>"lkbkj23@test.de", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
  User Load (0.9ms)  SELECT  "users".* FROM "users" WHERE "users"."email" =  ORDER BY "users"."id" ASC LIMIT   [["email", "lkbkj23@test.de"], ["LIMIT", 1]]
Completed 401 Unauthorized in 6ms (ActiveRecord: 0.9ms)

在解释如何复制 Rails 应用程序的线程中,我读到了一些关于需要创建新的 secret_token 变量的信息。这是我唯一可能遗漏的想法。但我不知道这是否是错误,我不知道在哪里以及如何设置新的 secret_token 变量。

在你的新项目的根目录下 运行:

rake secret

现在将此输出复制到剪贴板。然后在 config/initializer/devise.rb 你需要这一行:

config.secret_key = "#{ENV['DEVISE_SECRET_KEY']}"

您需要一种在本地开发环境中加载环境变量的方法。您可以使用 dotenv gem and then you'll have a file in root of project called .env and you'll add the key you generated with the rake command. Or you might want to checkout figaro gem,最近似乎没有 updated/maintained。在您的 .env 文件中添加一行:

DEVISE_SECRET_KEY=<paste key here>

如果您正在使用 git 版本控制将 .env 添加到 .gitignore 文件,请确保在进行这些更改之前。这将确保您不会意外地将您的密钥提交给您的存储库。