# Automated page building

**URL:** <https://www.ruby-forum.com/t/automated-page-building/104268>\
**Category:** Radiant CMS\
**Created:** [May 16, 2007, 5:36am UTC](https://www.ruby-forum.com/t/automated-page-building/104268 "2007-05-16T05:36:23Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 5:36am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/1 "2007-05-16T05:36:23Z")

</div>

Dear All,

I started using Radiant and appreciate much its elegant interface. As  
a user I find it easy to use the Radiant interface for creating  
new pages and developing complex webpages with minimal effort.  
I wonder if there is a way to create certain pages automatically  
using some kind of script.

The situation is that we have weekly updates to our climate monitoring  
webpage. For this, about 50 images have to be uploaded to the site  
and the corresponding pages built every week. Wonder if Radiant could be  
provided instructions to do this using a script than a person sitting  
and typing it all in.

## Thanks for any pointers, saji

Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 5:56am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/2 "2007-05-16T05:56:24Z")

</div>

You could write a Ruby script that you invoke with script/runner, or  
better yet, a Rake task. It will require some knowledge of the inner  
workings of Radiant (at least how the models interact).  
Alternatively, if you’re not comfortable with using the shell,  
Capistrano could help you automate this, especially if the images are  
local and not from external service.

Sean

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 6:28am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/3 "2007-05-16T06:28:26Z")

</div>

require ‘config/environment’

parent = Page.find\_by\_url(’/path/to/parent’)

50.times do {|i|  
child = Page.new  
child.parent = parent  
child.title = “Page #{i}”  
child.breadcrumb = “Page #{i}”  
child.slug = “page-#{i}”  
body = PagePart.new  
body.content = “This is page #{i}”  
child.parts = body  
child.save!  
}

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 6:22am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/4 "2007-05-16T06:22:26Z")

</div>

Dear Sean,  
Thank you for the tips. I am comfortable with writing shell or  
Ruby scripts for this task, but have no idea of the inner workings of  
Radiant. I have briefly looked at the Capistrano manuals and it  
is a possible tool for my purpose.  
If there is an example showing how to use scripting (ruby/bash) for  
this kind of job, I would be grateful to learn from it.

Thanks,  
saji

- Sean C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-15 20:55:25 -0700]:

> > Dear All,  
> > provided instructions to do this using a script than a person sitting  
> > KOREA  
> > Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)  
> > –  
> > Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 7:06am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/5 "2007-05-16T07:06:29Z")

</div>

Hi Daniel,  
Thanks very much. I ran the following code (included inside a file  
test.rb)

# Start of code

parent = Page.find\_by\_url(/articles/)

i=1  
child = Page.new  
child.parent = parent  
child.title = “Page #{i}”  
child.breadcrumb = “Page #{i}”  
child.slug = “page-#{i}”  
body = PagePart.new  
body.content = “This is page #{i}”  
child.parts = body  
child.save!

# End of code

And then went to root of my application and ran:

“script/runner -e production test.rb”

Unfortunately I got the following error messages. Any further tips  
would be greatly appreciated.

saji

/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45:  
undefined method `strip’ for /articles/:Regexp (NoMethodError)

```
    from 

```

/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/app/models/page.rb:129:in  
`find\_by\_url’

```
    from 

```

/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/app/models/page.rb:151:in  
`find\_by\_url’

```
    from (eval):3
    from 

```

/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `eval' from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem\_original\_require’  
from  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require’  
from script/runner:3

- Daniel S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-16 14:24:19  
+1000]:

> body = PagePart.new
> 
> > To: removed\_email\_address@domain.invalid  
> > Thanks,  
> > images are
> > 
> > > > new pages and developing complex webpages with minimal effort.  
> > > > and typing it all in.  
> > > > removed\_email\_address@domain.invalid  
> > > > Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)
> > 
> > * * *
> > 
> > Radiant mailing list  
> > Post: removed\_email\_address@domain.invalid  
> > Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> > Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)
> 
> * * *
> 
> Radiant mailing list  
> Post: removed\_email\_address@domain.invalid  
> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 7:28am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/6 "2007-05-16T07:28:31Z")

</div>

Saji,

Make sure to put quotes around that URL. It should be a string, not a  
regex.

parent = Page.find\_by\_url("/articles/")

Sean

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 7:34am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/7 "2007-05-16T07:34:31Z")

</div>

> Subject: Re: [Radiant] automated page building
> 
> Very funny Daniel ;).
> 
> Sean

Funny? That code is pretty much verbatim from a script I have to  
generate a bunch of pages for benchmarking find\_by\_url.

Dan.

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 7:27am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/8 "2007-05-16T07:27:31Z")

</div>

Very funny Daniel ;).

Sean

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 8:14am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/9 "2007-05-16T08:14:33Z")

</div>

Well, I thought it was funny. Don’t mind the crazy person! (me)

Sean

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 10:14am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/10 "2007-05-16T10:14:07Z")

</div>

child.parts should be an array

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 9:02am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/11 "2007-05-16T09:02:37Z")

</div>

Sean,

Thanks…

With the URL now enclosed by quotes, I get the following error …hmmm.  
what could i be doing wrong?

saji

# Start of Ruby code

#require ‘config/environment’ ! i commented this out

parent = Page.find\_by\_url(“/articles/”)

i=1  
child = Page.new  
child.parent = parent  
child.title = “Page #{i}”  
child.breadcrumb = “Page #{i}”  
child.slug = “page-#{i}”  
body = PagePart.new  
body.content = “This is page #{i}”  
child.parts = body  
child.save!

# End of Ruby code

## START OF ERROR MESSAGE

(/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45:  
undefined method `each' for #<PagePart:0xb765b49c> (NoMethodError) from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb:137:in `replace’  
from  
/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active\_record/associations.rb:950:in  
`parts=' from (eval):13 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `eval’  
from  
/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45  
from  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require’  
from script/runner:3

## END OF ERROR MESSAGE

- Sean C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-15 22:27:52 -0700]:

> > Thanks very much. I ran the following code (included inside a file test.rb)  
> > body = PagePart.new  
> > would be greatly appreciated.  
> > from /usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `eval’
> > 
> > > parent = Page.find\_by\_url(‘/path/to/parent’)  
> > > child.save!
> > > 
> > > > Dear Sean,
> > > > 
> > > > - Sean C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-15 20:55:25 -0700]:
> > > > 
> > > > > Sean
> > > > > 
> > > > > > saji  
> > > > > > Radiant mailing list  
> > > > > > –  
> > > > > > Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)
> 
> * * *
> 
> Radiant mailing list  
> Post: removed\_email\_address@domain.invalid  
> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 10:54am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/12 "2007-05-16T10:54:30Z")

</div>

Dear Dan,

Thanks very much. I put child.parts as an array.  
child.parts = [body]

Now the error is while  
saving.

```
   child.save!

```

Here is the error message. Do I need to enter pass on  
login and password information through the script? If so how may i do  
that. Or what else could be the source of the error?

Thanks much for your patience and kind help.

saji

/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45:  
/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active\_record/validations.rb:764:in  
`save_without_transactions!': Validation failed: Parts is invalid (ActiveRecord::RecordInvalid) from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active_record/transactions.rb:133:in `save!’  
from  
/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active\_record/connection\_adapters/abstract/database\_statements.rb:59:in  
`transaction' from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active_record/transactions.rb:95:in `transaction’  
from  
/usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active\_record/transactions.rb:121:in  
`transaction' from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/activerecord/lib/active_record/transactions.rb:133:in `save!’  
from (eval):16  
from  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `eval' from /usr/lib/ruby/gems/1.8/gems/radiant-0.6.1/vendor/rails/railties/lib/commands/runner.rb:45 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem\_original\_require’  
from  
/usr/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in `require’  
from script/runner:3

- Daniel S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-16 18:09:53  
+1000]:

> > Sean,  
> > #require ‘config/environment’ ! i commented this out  
> > body.content = “This is page #{i}”  
> > child.parts = body  
> > child.save!
> 
> * * *
> 
> Radiant mailing list  
> Post: removed\_email\_address@domain.invalid  
> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 12:48pm UTC](https://www.ruby-forum.com/t/automated-page-building/104268/13 "2007-05-16T12:48:59Z")

</div>

On May 16, 2007, at 5:16 AM, Francesco L. wrote:

> > …  
> > I think it should be child.parts \<\< body

I prefer the following, as it gives me the necessary associations of  
things to one another. Perhaps the other code is failing as it is  
missing the part name of “body”?

* * *

require ‘config/environment’

parent = Page.find\_by\_url(’/request’)

50.times do |i|  
child = parent.children.build(  
:title =\> “Page #{i}”,  
:breadcrumb =\> “Page #{i}”,  
:slug =\> “page-#{i}”)  
child.parts.build(  
:content =\> “This is page #{i}”,  
:name =\> “body”)  
child.save!  
end

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 11:19am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/14 "2007-05-16T11:19:42Z")

</div>

Saji Njarackalazhikam H. ha scritto:

> …  
> I think it should be child.parts \<\< body

ciao

–  
Francesco L.  
Ymir s.r.l.  
Viale Verona 190/11  
38100 Trento

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 17, 2007, 3:00am UTC](https://www.ruby-forum.com/t/automated-page-building/104268/15 "2007-05-17T03:00:42Z")

</div>

Thank you, this works… thanks to all who helped.  
best wishes,  
saji

- Adam W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2007-05-16 06:49:54 -0400]:

> > >
> 
> require ‘config/environment’  
> :name =\> “body”)  
> child.save!  
> end
> 
> * * *
> 
> Radiant mailing list  
> Post: removed\_email\_address@domain.invalid  
> Search: [http://radiantcms.org/mailing-list/search/](http://radiantcms.org/mailing-list/search/)  
> Site: [http://lists.radiantcms.org/mailman/listinfo/radiant](http://lists.radiantcms.org/mailman/listinfo/radiant)

–  
Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![saji](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c6cbf5/32.png) [@saji](https://www.ruby-forum.com/u/saji)\
**Post date:** [May 16, 2007, 5:35pm UTC](https://www.ruby-forum.com/t/automated-page-building/104268/16 "2007-05-16T17:35:45Z")

</div>

+1 for model.association\_name.build

Sean
