小编Jbu*_*r43的帖子

为生产Rails应用设置管理员用户

我有一个我想为其设置管理用户的Rails应用程序。

当我在本地计算机上执行此操作时,我只是进入控制台并进行设置User.admin = true,然后保存了记录。

现在,我在Heroku上安装了我的应用程序,并尝试使用以下命令提取数据库:

heroku pg:pull HEROKU_POSTGRESQL_quotes_app mylocaldb --app quotesappp
Run Code Online (Sandbox Code Playgroud)

在这种情况下,quotesapp是我的数据库,quotesappp是我在Heroku上的应用程序名称。当我这样做时,会遇到以下错误:

Unknown database: HEROKU_POSTGRESQL_quotes_app. Valid options are: DATABASE_URL
Run Code Online (Sandbox Code Playgroud)

我从正在生产的yml文件中获得了数据库名称quotesapp。

database.yml:

production:
  <<: *default
  database: quotes_app
Run Code Online (Sandbox Code Playgroud)

我的想法是将数据库拉到本地,设置管理员用户,然后将其推回生产环境。有人看到我为什么得到这个错误吗?还是可以建议一种更好的方法?

ruby model-view-controller ruby-on-rails admin heroku

4
推荐指数
1
解决办法
330
查看次数

如果索引位置大于特定值,则删除数组元素

我试图删除数组中的元素,如果它的索引大于某个值.我希望做这样的事情:

a = ["a", "b", "c"]
b = a.delete_if {|x| x.index > 1 }
Run Code Online (Sandbox Code Playgroud)

我在接过来一看drop,delete_if等我试图完成这个使用each_with_index是这样的:

new_arr = []
a.each_with_index do |obj, index|
    if index > 1
        obj.delete
    end
    new_arry << obj
end
Run Code Online (Sandbox Code Playgroud)

如果数组元素的数组位置大于某个值,我怎么能删除它?

ruby arrays

4
推荐指数
1
解决办法
1589
查看次数

rails应用程序中的静态图像资产未在Heroku生产中显示

我尝试在部署之前使用以下命令预编译我的图像:

$ RAILS_ENV=production bin/rake assets:precompile

我正在使用image_tag我的模板,在开发中工作.

更新:config.serve_static_files据说在dev中默认为true,但之后在生产中关闭,因为资产应该通过您的Web服务器提供.我目前只是在heroku上使用免费套牌而且仍在运行webrick,所以我将此设置为true,但没有运气.

更新2:当我设置config.serve_static_filesfalse,heroku没有看到我的任何资产时,我的所有样式都消失了,图像仍然没有.虽然heroku确实发送了一条警告消息,告诉大师说所有" config.serve_static_files确实能够提供服务公共文件夹中的所有内容,并且与资产管道无关." 我认为它与资产管道无关,因为它只是提供公共文件夹中的资产而不查看我们的资产目录.我也看到heroku在部署时运行预编译命令,所以我不需要每次都这样做.

这让我想知道我使用它调用我的资产的方式image_tag是否可能是问题,但我不确定为什么会这样?

更新3:资产管道的rails指南说:"在常规视图中,您可以访问public/assets/images目录中的图像,如下所示:<%= image_tag "rails.png" %>.我正在使用此约定调用我的图像<%= image_tag("lab49", size: "80x30") %>,但图像仍然不会出现.

更新4:看到我的回答.

ruby ruby-on-rails heroku asset-pipeline

3
推荐指数
1
解决办法
1100
查看次数

删除远程 .git Heroku 文件

我从管理控制台删除了我的 Heroku 应用程序,但是当我尝试使用同一个存储库创建一个新应用程序时,它仍在尝试推送到旧应用程序,我运行以下命令来查看 git 文件

git remote -v
Run Code Online (Sandbox Code Playgroud)

返回这些文件

origin  git@github.com:Jbur43/all-bugs-aside.git (fetch)
origin  git@github.com:Jbur43/all-bugs-aside.git (push)
Run Code Online (Sandbox Code Playgroud)

我他们试着跑步git rm all-bugs-aside.gitgit rm git@github.com:Jbur43/all-bugs-aside.git然后git rm all-bugs aside

我还尝试使用 -rf 运行所有这些命令,但无法删除文件。

有人可以帮助我删除这些文件所需的语法,并且一旦删除它们,我应该能够创建一个新的 heroku 应用程序并推送到git push heroku master,对吗?

git ruby-on-rails github heroku

1
推荐指数
1
解决办法
1560
查看次数

用于nil的未定义方法`email':NilClass link.user.email

在我的index.html.erb文件中,我收到了一个未定义的电子邮件方法.我进入rails控制台并尝试运行User.first.email,它运行良好.我尝试取出电子邮件并运行link.user,这也很有用.当用户绑定到链接并且用户有电子邮件时,我不确定为什么电子邮件是未定义的.我正在寻找一些可能出错的建议.

Index.html.erb

<%= link.user.email %>
Run Code Online (Sandbox Code Playgroud)

迁移的架构已经运行

create_table "users", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
Run Code Online (Sandbox Code Playgroud)

楷模:

class Link < ActiveRecord::Base
    belongs_to :user
    validates :user, presence: true
    acts_as_votable
    attr_accessor :avatar
    mount_uploader :avatar, AvatarUploader
end

class User < ActiveRecord::Base
    has_many :links
    acts_as_voter
    devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end
Run Code Online (Sandbox Code Playgroud)

链接控制器:

class LinksController < ApplicationController
  before_filter :authenticate_user!, except: [:index, :show]

  def index
    @links = Link.all
  end

  def show
    @link = Link.find(params[:id])
  end

  def new
    @link …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4

1
推荐指数
1
解决办法
3178
查看次数