小编Ben*_*ney的帖子

生成过去12个月的月末日期

我需要一个方法来生成一个包含过去12个月中每个月的结束日期的数组.我想出了下面的解决方案.然而,它的工作方式可能更为优雅,可以解决这个问题.有什么建议?有没有更有效的方法来生成这个数组?任何建议将不胜感激.

require 'active_support/time'

...

def months
  last_month_end = (Date.today - 1.month).end_of_month
  months = [last_month_end]
  11.times do
    month_end = (last_month_end - 1.month).end_of_month
    months << month_end
  end
  months
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

在字符串数组中查找字符串的 Ruby 方法

我有一个看起来像这样的字符串数组:

[noindex,nofollow]
Run Code Online (Sandbox Code Playgroud)

或 [“索引”,“关注”,“全部”]

我称这些为“tags_array”。我有一个看起来像这样的方法:

return true if self.tags_array.to_s.include? "index" and !self.tags_array.to_s.include? "noindex"
Run Code Online (Sandbox Code Playgroud)

但我认为有一种比获取整个数组并将其转换为字符串更聪明的方法来运行此代码。

问题是,有时信息以单个元素数组的形式出现,而有时它以字符串数组的形式出现。

关于最明智的方法有什么建议吗?

ruby

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

如何根据环境配置回形针以保存到不同的目录

我正在合作一个应用程序,偶尔会遇到麻烦,原因是最初的开发人员在linux上工作,我在OSX.我目前的问题与使用ImageMagik和paperclip上传图像有关.当我尝试将图片上传到应用程序时,我收到以下消息.

Permission denied - /assets
Run Code Online (Sandbox Code Playgroud)

我很确定这意味着该应用程序想要将图像保存在资产目录中的某个位置,但不能,因为它在我的计算机上不存在.

在模型中,这是解决图片的代码.

has_attached_file :avatar, 
  :url  => "/avatars/:id?style=:style",
  :styles => { :large => "190x190#", :medium => "70x70#", :thumb => "106x106#" },
  :path => "/assets/rob/images/Users/:id/:style/:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

现在,我假设这个目录存在于原始程序员的计算机上以及托管站点的任何地方.但是我没有那个目录,所以我这样做了:

  :path => "~/robotimus/dev_images/:id/:style/:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

但是现在我陷入困境,因为在部署之前我最终还是要恢复那条线.作为解决方案,我可以编写这样的方法.

def images_path
  Rails.env.production? ? "/assets/rob/images/Users/" : "~/robotimus/dev_images"
end
Run Code Online (Sandbox Code Playgroud)

然后:path行看起来像这样:

  :path => images_path + "/:id/:style/:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

这听起来像个好主意吗?此外,该方法应存储在何处?我的猜测是它属于config/environment.rb,但我想得到专家的意见.

linux macos ruby-on-rails paperclip

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

Dockerfile:如何从文件内容设置环境变量

我想在Dockerfile中设置一个环境变量。

我有一个.env看起来像这样的文件: FOO=bar

在我的Dockerfile中,我有一个命令来解析该文件的内容并将其分配给FOO。

RUN 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'

我遇到的问题是上面的脚本没有返回我需要的脚本。实际上,它不返回任何内容。

当我运行时docker-compose up --build,它将失败并显示此错误。

The command '/bin/sh -c 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'' returned a non-zero code: 127

我知道该命令/bin/sh -c 'echo "$(cut -d'=' -f2 <<< $(grep FOO .env))"'将生成正确的输出,但是我无法弄清楚如何将该输出分配给环境变量。

关于我在做什么错的任何建议吗?

shell posix sh docker docker-compose

3
推荐指数
2
解决办法
9874
查看次数

如何删除整个班级

我正在开始重构我的测试以在不加载Rails的情况下运行.我的大多数测试仍然是加载轨道的标准rspec测试.我的问题是,在下面的测试文件中,我覆盖了许多其他测试文件中使用的一个类.因此即使这些测试通过,其他测试也会失败.我想在这里得到很多建议之后将那个Project类存根.(我宁愿在这个文件中存根项目类,而不是在需要它的所有其他测试文件中重新加载项目类.)

这就是我现在拥有的.

require 'active_model'
require 'active_model/validations'
require 'active_record/callbacks'
require 'active_support/core_ext/string' #used for '.blank?' method


class Project
  attr_accessor :general_media
  def initialize(attributes = {})
    @general_media = attributes[:general_media]
  end
  include ActiveModel::Validations    
  include ActiveRecord::Callbacks
end

require_relative '../../../app/models/project/media.rb'

describe 'Project::Media' do
  #then all the tests
Run Code Online (Sandbox Code Playgroud)

我试图创建一个FakeProject类,并让Project :: Media通过使用FakeProject对项目进行存根来继承它,但是它没有用.这就是我所拥有的.

require 'active_model'
require 'active_model/validations'
require 'active_record/callbacks'
require 'active_support/core_ext/string' #used for '.blank?' method


class FakeProject
  attr_accessor :general_media
  def initialize(attributes = {})
    @general_media = attributes[:general_media]
  end
  include ActiveModel::Validations    
  include ActiveRecord::Callbacks
end
class Project; end
require_relative '../../../app/models/project/media.rb'

describe …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

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

你的.gitignore文件对于Unity项目是什么样的?

我开始使用Unity,我注意到即使代码变化很小,也会产生大量的git差异.

最初,我.gitignore刚刚有这个: Temp/

但它没有做太多繁重的工作.

我在Github上找到了这个.gitignore模板,但我很好奇是否有其他人使用它 - 无论是起点还是原样.

unity-game-engine unity5 unity2d

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

Rails模型不相互交谈.不确定如何将记录添加到另一个模型中

我正在开发一个可以进行网页抓取的应用程序.在网站模型中,我有这个方法:

  def download_meta_tags
    downloaded_tags = Nokogiri::HTML(Net::HTTP.get(self.domain, "/")).xpath("//meta[@name='robots']")
    downloaded_tags.each do |t|
      self.robots_tags.tag << t
    end
  end
Run Code Online (Sandbox Code Playgroud)

站点模型通过名为robots_tag_sites的连接表有许多robots_tags.网站模型还接受了_nested_attributes_for:robots_tags.上述方法旨在获取在方法的第1行中下载的所有标记,并将它们保存到robots_tags表的tags列中.

我认为问题在于"self.robots_tags"仍然会抓取一系列东西而不是一个单独的东西.但我不确定如何正确添加标签.有什么建议?

(顺便说一句,这些是另一篇文章的后续内容,Rails应用程序在模型间保存方面存在问题)

ruby ruby-on-rails

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