小编gyl*_*laz的帖子

通过Ruby on Rails验证方法的最佳方法是什么?

目前我有一个功能来检查出生年份是否正确:

  validates :birth_year, presence: true,
            format: {with: /(19|20)\d{2}/i }
Run Code Online (Sandbox Code Playgroud)

我还有一个检查日期是否正确的函数:

  validate :birth_year_format

  private

  def birth_year_format
    errors.add(:birth_year, "should be a four-digit year") unless (1900..Date.today.year).include?(birth_year.to_i)
  end
Run Code Online (Sandbox Code Playgroud)

是否可以将底部方法组合到validates顶部而不是我现在拥有的两个验证?

ruby-on-rails

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

在Procfile中启动多个worker(开发环境vs Heroku)

我有一个简单的Procfile,内容如下:

web: bundle exec rails server thin -p $PORT
worker: bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)

在Heroku上,这将启动N个工作任务,其中N是我将其缩放的任何东西.

在我的开发系统上,

$ foreman start
Run Code Online (Sandbox Code Playgroud)

只会启动一个工作任务.如果我想启动三个worker,我需要一个看起来像这样的Procfile:

web: bundle exec rails server thin -p $PORT
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)

这是一个有点迂腐的问题,但如果我希望我的开发环境像我的Heroku环境一样,那么启动N个工作任务的最佳方法是什么?是批准的方法来创建(例如)Procfile_local并通过它使用它foreman -f Procfile_local

ruby-on-rails heroku delayed-job foreman

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

使用共享功能分支的git工作流程是什么?

假设我有一个feature已经分支的分支master.developer1和developer2结账两者feature.developer1提交更改feature并推送它.然后developer3推送一些东西master.此时masterfeature发散,每个都有一个单独的提交.

什么是去获得从最新的正确方法master进入feature,如果有冲突?我应该重新master加入feature,还是合并?

编辑:

我应该提一下,在这种情况下,我不想重写developer2上的历史记录.因为那会很糟糕.对?

git

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

Rails:使用什么列类型来保存上传的图像?

这是我的第一个 Rails 项目。我对如何将图像文件保存在数据库中感到有点困惑,因为它们占用了大量空间。我的网站将成为人们上传大量图像的网站。在创建图片表的迁移中,我会将图像文件名保存为字符串吗?还有人提示在哪里保存图像(资产、公共等)吗?

抱歉,我只是一个寻求指导的菜鸟。

ruby-on-rails

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

为什么`git push -f` force会推送所有跟踪分支?

Git版本:1.7.12.3

正如问题所述,这对我来说似乎是一个非常糟糕的主意.没有任何额外的标志或确认git push -f将强制将所有跟踪分支推送到远程.

如果开发人员有一些过时的分支,即跟踪遥控器,并且他执行该命令,则所有跟踪分支都将回滚到他过时的副本,这会导致丢失有价值的工作.

这可能是偶然发生的,或者是由git经验不足的人完成的.看起来git应该在这样一个危险的情况下做更多的手持,并需要一个额外的标志,或要求确认.

这有补救措施吗?

git

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

Go包命名约定背后的想法是什么?

我试图理解Go中包命名约定背后的想法.大多数软件包的安装和导入类似于:

import "github.com/howeyc/fsnotify"
Run Code Online (Sandbox Code Playgroud)

我认为包名应该是唯一的,但我没有看到使用网站的意义github.com.为什么不用author/package?喜欢:

import "howeyc/fsnotify"
Run Code Online (Sandbox Code Playgroud)

那不太可能发生碰撞.还是其他一些"更短"的策略?是因为它"正常" go get吗?还是有其他原因吗?

naming-conventions go

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

玩笑测试:在连接组件中等待多个承诺

我有一个连接组件(HOC),可以在 中获取一些数据componentDidMount,例如:

function setData(data) {
  return { type: "SET_DATA", data: data };
}

function fetchData() {
  return axios.get("http://echo.jsontest.com/key/value/one/two");
}

function getData(dispatch) {
  return () => fetchData().then(response => dispatch(setData(response.data)));
}

class Welcome extends Component {
  componentDidMount() {
    this.props.getData();
  }

  render() {
    if (this.props.data) {
      return <div>We have data!</div>;
    } else {
      return <div>Waiting for data...</div>;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

完整代码可以在这里看到:https://github.com/gylaz/react-integration-test-example/blob/eb3238c0a8aa4b15331a031d7d2d3a0aa97ef9c7/src/App.js

我的测试看起来像:

it("renders without crashing", async () => {
  axios.get = jest.fn(() => {
    return Promise.resolve({ data: { one: 1, …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous reactjs jestjs redux

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

视图:设置实例变量还是传入局部变量更好?

我对将变量从控制器传递到视图有疑问。最佳实践是什么,性能是什么,最后在局部变量中传递变量或将变量作为实例变量传递的优点和缺点是什么?例子:

controller.rb
@string = "Some string"
Run Code Online (Sandbox Code Playgroud)

然后在视图中:

view.erb
<%= @string %>
Run Code Online (Sandbox Code Playgroud)

或者更好地通过

controller.rb
render some_path,
      :locals => {
          :string => 'aww',
      }
Run Code Online (Sandbox Code Playgroud)

然后是内部视图:

<%= string %>
Run Code Online (Sandbox Code Playgroud)

对象、布尔值会怎样?性能有什么区别吗?什么是更好的做法?

问候

ruby-on-rails

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